Autor Wątek: ogre3d, pytania i problem z przygotowaniem do pracy-linux  (Przeczytany 5890 razy)

Offline Dash

  • Użytkownik

# Luty 07, 2015, 21:49:02
http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Basic+Tutorial+1
ten najdłuższy kod

Chciałem wklepać cokolwiek, żeby zobaczyć czy śmiga, nie pomyślałem że nieprecyzyjnie się wyrażam.

@edit;

sudo cp  /home/lord/desktop/BaseApplication.cpp /usr/include/OGR
tym poleceniem dodałem także BaseApplication.cpp/.h oraz TutorialApplication.cpp/.h
« Ostatnia zmiana: Luty 07, 2015, 21:54:08 wysłana przez Dash »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline toxic

  • Użytkownik

# Luty 07, 2015, 22:23:33
Chyba Cie nie rozumiem, albo linka zlego mi dales.

Tam na tej stronie http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Basic+Tutorial+1 nie widze, aby gdzies cos bylo o ExampleApplication.h lub ExampleFrameListener.h - a zatem skad w ogole Ci wyskoczylo, ze takich plikow Ci brakuje? Chyba musialbys pokazac, co dokladnie kompilujesz (ale chyba nie chce tego ogladac na forum - moze jakbys wrzucil swoj projekt na jakies repozytorium typu bitbucket/github to by bylo nam wygodniej). Bo tak to nie wiem co probujesz zrobic.

Aha, tych BaseApplication, ExampleApplication itepe - nie kopiowalbym do /usr/blabla/OGRE - one nie wygladaja na brakujace pliki w bibliotece, tylko na no... przykladowe pliki korzystajace z biblioteki. A zatem w /usr/blabla/OGRE nie jest ich miejsce. Ale to tak na marginesie.

Offline Dash

  • Użytkownik

# Luty 07, 2015, 23:06:48
    Coś zrobiłem nie tak, próbuję skompilować, i zawsze brakuje jakiegoś pliku .h . Zazwyczaj z początkiem OIS. Dodałem już parenaście takich, a końca nie widać. Chyba pominąłem jakiś pakiet przy instalacji. Pliki takie jak ExampleApplication.h znajdują się w pliku main.cpp po stworzeniu projektu ogre. To właśnie z niego się kompilują.
    No chyba że robię coś elementarnie źle, jak np. złe tworzenie projektu (NewFile--->Project i typ projektu Ogre)

Offline toxic

  • Użytkownik

# Luty 07, 2015, 23:16:13
A, bo Ty uzywasz code::blocks, tak? Kurcze, to tu juz chyba nie pomoge. Musialbym widziec przed oczyma co dokladnie probujesz skompilowac. Ech, pomysl o tym bitbucket/githubie (lub innym repozytorium) - jakbys wrzucil gdzies w siec kod Twojej aplikacji, tak zeby sie ja wygodnie sciagalo i edytowalo, to moze moglbym Ci cos jeszcze z nia pomoc. Bez tego widze, ze bedzie kiepsko :).

Offline Dash

  • Użytkownik

# Luty 07, 2015, 23:37:54
Wstyd się przyznać, nie umiem wstawić kodu na te repozytoria :/. Tak chyba będzie szybciej:
główny kod main.cpp

// ----------------------------------------------------------------------------
// Include the main OGRE header files
// Ogre.h just expands to including lots of individual OGRE header files
// ----------------------------------------------------------------------------
#include <Ogre.h>
// ----------------------------------------------------------------------------
// Include the OGRE example framework
// This includes the classes defined to make getting an OGRE application running
// a lot easier. It automatically sets up all the main objects and allows you to
// just override the bits you want to instead of writing it all from scratch.
// ----------------------------------------------------------------------------
#include <ExampleApplication.h>

// ----------------------------------------------------------------------------
// Define the application object
// This is derived from ExampleApplication which is the class OGRE provides to
// make it easier to set up OGRE without rewriting the same code all the time.
// You can override extra methods of ExampleApplication if you want to further
// specialise the setup routine, otherwise the only mandatory override is the
// 'createScene' method which is where you set up your own personal scene.
// ----------------------------------------------------------------------------
class SampleApp : public ExampleApplication
{
public:
    // Basic constructor
    SampleApp()
    {}

protected:

    // Just override the mandatory create scene method
    void createScene(void)
    {
        // Create the SkyBox
        mSceneMgr->setSkyBox(true, "Examples/CloudyNoonSkyBox");

        // Create a light
        Light* myLight = mSceneMgr->createLight("Light0");
        myLight->setType(Light::LT_POINT);
        myLight->setPosition(0, 40, 0);
        myLight->setDiffuseColour(1, 1, 1);
        myLight->setSpecularColour(1, 1, 1);
    }
};


// ----------------------------------------------------------------------------
// Main function, just boots the application object
// ----------------------------------------------------------------------------
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
#else
int main(int argc, char **argv)
#endif
{
    // Create application object
    SampleApp app;

    try
    {
        app.go();
    }
    catch( Exception& e )
    {
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
        MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
#else

        std::cerr << "An exception has occured: " << e.getFullDescription();
#endif
    }

    return 0;
}


pierwszy plik, ten który ma wyświetlić łeb ogra

#include "TutorialApplication.h"

TutorialApplication::TutorialApplication(void)
{
}

TutorialApplication::~TutorialApplication(void)
{
}

//-------------------------------------------------------------------------------------
void TutorialApplication::createScene(void)
{
    // Set the scene's ambient light
    mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5f, 0.5f, 0.5f));

    // Create an Entity
    Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");

    // Create a SceneNode and attach the Entity to it
    Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("HeadNode");
    headNode->attachObject(ogreHead);

    // Create a Light and set its position
    Ogre::Light* light = mSceneMgr->createLight("MainLight");
    light->setPosition(20.0f, 80.0f, 50.0f);
}



#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
    INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
#else
    int main(int argc, char *argv[])
#endif
    {
        // Create application object
        TutorialApplication app;

        try
        {
            app.go();
        } catch( Ogre::Exception& e ) {
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
            MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR| MB_TASKMODAL);
#else
            std::cerr << "An exception has occured: " << e.getFullDescription().c_str() << std::endl;
#endif
        }

        return 0;
    }

#ifdef __cplusplus
}
#endif






podczas kompilacji wyskakuje błąd, że nie ma pliku/katalogu OISInterface.h     
Gdy ręcznie go stworzę z zasobów pobranych z internetu i wkleję w odpowiednie miejsce, kompilator wytknie mi brak czegoś innego. I tak w kółko.

Offline toxic

  • Użytkownik

# Luty 08, 2015, 00:07:11
Skad wziales main.cpp? Sam sie zrobil? Wedlug mnie wywal ten plik, bo wyglada jakby to byla starsza wersja tego, co jest w TutorialApplication.

Cytuj
Wstyd się przyznać, nie umiem wstawić kodu na te repozytoria
No dobra, rozumiem. Ale wiesz co? Czuje, ze jesli bedziemy dalej tutaj drazyc ten temat, to sie zameczymy (ja juz sie troche zmeczylem takim zdalnym debugowaniem poprzez forum, a Ty?). I troche nie chce mi sie w to wchodzic (czytaj: nie mam czasu na to :( ). Z drugiej strony tak sobie mysle, ze w skromnym zakresie moge Ci pomoc ogarnac gita i prace na repozytorium umieszczonym na githubie/bitbuckecie. No bo tak sobie mysle, ze nawet jesli ja z tego nic nie bede miec, to na przyszlosc moze Ci sie to przyda. Albo przyda sie temu komus, kto Ci bedzie pomagal debugowac kod zdalnie ;).

Chociaz mysle, ze akurat z postawieniem repo i wrzuceniem kodu nie powinienes miec problemow - wydaje mi sie, ze teraz pelno jest informacji w internetach jak to sie robi krok po kroku, takich dla 'newbie'. To co? Dalbys rade sie namowic na wrzucenie tej swojej aplikacji gdzies na githuba/bitbucketa? Poradzisz sobie z tym?

Mi sie jakby co nie pali - nie chodzi mi o to, zebys to zrobil juz teraz, dzisiaj, natychmiast. Tylko jesli mam dalej Ci pomagac (dzis, jutro, za tydzien, za miesiac), to chce w sposob wygodny miec dostep do tego co piszesz, moc to edytowac i udostepniac Ci to spowrotem. Stad prosba o zalozenie repozytorium. Chyba ze masz lepszy pomysl. Ok?

Offline Dash

  • Użytkownik

# Luty 08, 2015, 00:45:42
    Repozytroia BitBucket itp. to trochę wyższa szkoła jazdy. W chwili obecnej studiuje książki dot. Git-a , niestety trochę zajmie zanim to opanuje.
    Co do Ogre, kod jest na pewno dobry, ponieważ skopiowany z oficjalnej  strony. Brakuje raczej bibliotek, wygląda mi to na luki w plikach. Zainstalowałem około 20-30 plików .h ręcznie (kopiując, wklejając do edytra tekstu, nazywając i podpinając pod pliki ogree), niestety za każdym razem czegoś brakuje. Być może te pliki znajdują się we Frameworkach bądź czymś innym czego nie uwzględniłem tworząc ten projekt.
   I tak wgl. czy nie powinienem jakoś użyć programu cmake? Chyba po coś go instalowałem, a tak w sumie nie wiem nawet po co. Chyba odpuszczę sobie na razie silniki dopóki nie popracuje nad wiedzą informatyczną, strach pomyśleć co to będzie w przyszłości, skoro instalacja trwa prawie dwa tygodnie...
   
« Ostatnia zmiana: Luty 09, 2015, 16:29:33 wysłana przez Dash »

Offline toxic

  • Użytkownik

# Luty 09, 2015, 16:58:48
Hgw. Nie za bardzo widze co probujesz skompilowac, wiec nie wiem. Mysle, ze cmake jest po to, zeby moc skompilowac sobie tego tutoriala, ktorego (jak rozumiem) skompilowalismy ostatecznie. A jak udalo sie go skompilowac, to i pewnie mozna by tam sie z wlasnym projektem rozlozyc (czytaj: tak rozwinac te tutorialowe BaseApplication.* i TutorialApplication.*, zeby tam sie cos wiecej wyswietlalo niz czarny ekran z licznikiem fpsow).

Ale jesli Ty stworzyles nowy projekt poprzez code::blocks - to ja nie wiem co on tam tak wlasciwie zrobil, jakie pliki pozakladal i w jaki dokladnie sposob probuje skompilowac projekt. Na pewno jest tak, ze da sie bez cmake'a kompilowac projekty Ogrowe. Tylko skads kompilator musi wiedziec, gdzie leza dependencje (biblioteki, ogre, takie tam) - cmake to zalatwia, bo wykrywa gdzie one sa. Czy code::blocks sie domysla jakos gdzie te dependencje leżą? Nie wiem. Spodziewalbym sie, ze nie.

Cytuj
Repozytroia BitBucket itp. to trochę wyższa szkoła jazdy.
Na pewno nie wyzsza niz skompilowanie pierwszego tutoriala do ogra pod linuksem. He-he. ;)

Offline Dash

  • Użytkownik

# Luty 09, 2015, 21:08:41
   Z jakiego środowiska korzystasz? Może będzię łatwiej jak też się na niego przestawie, będziesz mógł mówić na ewentualnym swoim przykładzie.
    Program który chciałem skompliować nie zadziałał... nie mam zamiaru dodawać ręcznie jeszcze parudziesięciu plików. Jest to program z tutorialu 1 na oficjalnej stronie ogre.  Czy przypadkiem nie trzeba includować czegoś w kompilatorze?
    Czy cała współpraca z tym silnikiem będzie tak wyglądać? Jeżeli tak to chyba szkoda marnować twojego czasu i moich nerwów, i dać laptopowi z pingwinkiem spokój, a używać drugiego komputera z Windowsem. Jak widzisz, oprócz klepania instrukcji które podajesz ty i tych znalezionych na necie, nie wiele mogę zdziałać. 

Offline toxic

  • Użytkownik

# Luty 10, 2015, 01:10:16
Wiesz co, ja wlasciwie nie korzystam (jeszcze) z zadnego srodowiska - po prostu odpalilem tego clean_ogre_cmake_project tym cmake (po tych poprawkach, ktore obaj robilismy) i tam sie stworzyl ten OgreApp. No to teraz tylko zaczalem edytowalem sobie TutorialApplication.cpp (ten z tej paczki clean_ogre_cmake_project_1-9.zip) tak jak to omawiaja w tutorialu: http://www.ogre3d.org/tikiwiki/Basic+Tutorial+1 i mi sie udalo wyswietlic glowe ogra.

Wez zajrzyj tutaj: https://bitbucket.org/toxic/ogredash/overview - jak sobie sklonujesz to repo na lokalny dysk, to bedziesz mogl podejrzec co dokladnie ja kompiluje i czym (czym: cmake a potem make - i to samo dziala).

Cytuj
Czy cała współpraca z tym silnikiem będzie tak wyglądać?
Nie, na pewno nie. Owszem, na moj gust Ogre pare przydatnych elementow nie posiada out-of-the-box, ktore trzeba sobie samemu zakodowac (albo sciagnac z forum Ogra), ale to juz jest tam jakas w miare przyjemnosc koderska. Natomiast takie upierdliwosci z kompilacja, setupem - to tylko na poczatku. No, moze jeszcze jak bedziesz chcial swoja prace komus przeslac, pokazac - to tam dojda problemy co wlasciwie dolaczyc do takiej paczki a co pozwolic uzytkownikowi sciagnac samemu. Ale to odlegla perspektywa, prawda? :)

Czy szkoda marnowac czas -> a nie wiem, to juz musisz sam zdecydowac. Ja jak na razie jeszcze dam rade :).

Offline Dash

  • Użytkownik

# Luty 10, 2015, 02:36:37
on.cpp:17:
/usr/include/OGRE/OgrePanelOverlayElement.h:1:1: error: expected unqualified-id before numeric constant
 1
 ^
make[2]: *** [CMakeFiles/OgreApp.dir/BaseApplication.cpp.o] Błąd 1
make[1]: *** [CMakeFiles/OgreApp.dir/all] Błąd 2
make: *** [all] Błąd 2
Błąd z konsoli po komendzie make
O co chodzi z tym kompilowaniem przez cmake? W jaki sposób wtedy piszesz kod? Pierwszy raz zaliczam zderzenie z brutalną rzeczywistością, wcześniej do czynienia miałem ze sterylnymi programami w C:D. Wiesz, klepię, wciskam f9 i TA DAM działa. Nie do końca rozumiem co w taki sposób robisz.


Offline toxic

  • Użytkownik

# Luty 10, 2015, 11:47:33
A skad masz tego /usr/include/OGRE/OgrePanelOverlayElement.h ? Sam go dogrywałeś? Pytam, bo u siebie go nie moge znalezc - wiec albo inne paczki zainstalowalismy, albo nie wiem co. Piszesz pare postow wczesniej, ze kilka/kilkanascie plikow (*.h) dorzucales recznie do /usr/include/OGRE/ - moze dorzuciles o pare za duzo, albo w zlej wersji? Nie wiem.

O co chodzi z tym kompilowaniem przez cmake - a nie wiem. Skoro autorzy Ogra w tutorialu mowia, zeby uzywac cmake + make (aby skompilowac tutorial) to mi by to wystarczylo juz, zeby cos zaczac robic. Dziala tutorial? Dziala. No to moglbym sobie edytowac pliki tutorialowe zwyklym notatnikiem i co jakis czas robic w konsoli "make", moglbym rownie dobrze odpalic sobie jakies IDE (np C::B) i tam edytowac te same pliki tutorialowe i co jakis czas robic w konsoli "make". I to by mi wystarczylo na poczatek. Az z tutoriala bym zrobil rzeczywista aplikacje (gre, program, cokolwiek).

Oczywiscie pewnie kiedys tam zaczelo by mnie to denerwowac i wolalbym odpalac projekt bezposrednio w IDE (klawiszem F9 czy czym tam sie w danym IDE odpala) i musialbym jakos w IDE skonfigurowac projekt tak, aby to F9 robilo co trzeba: w najprostrzej wersji niechże sobie odpala w tle "make" :).

Offline Dash

  • Użytkownik

# Luty 24, 2015, 14:53:02
   Trochę czasu minęło, posypał mi się komputer. Niestety kolejne próby instalacji ogre wywalają inne błędy, a drugi raz przez to nie chce mi się przechodzić. Wrócę do tego tematu za pół roku/rok jak poszerzę swoją ogólną wiedzę informatyczną. W chwili obecnej nie rozumiem co drugiego słowa w ichniejszych, nie ma co się porywać z motyką na słońce.
  Wielkie dzięki za pomoc, Toxic, podziwiam że miałeś tyle cierpliwości. Jak się kiedyś spotkamy masz u mnie murowaną flaszkę ;).
Do usłyszenia w innych tematach.

Offline toxic

  • Użytkownik

# Luty 24, 2015, 16:05:29
Do uslyszenia i powodzenia :).

Offline conx

  • Użytkownik

# Maj 09, 2015, 01:34:50
Powalcz trochę, nie poddawaj się tak łatwo - warto.
Ja to robię troche inaczej, sam kompiluje Ogra i uzywam Eclipsa. Z paczkami z repo zawsze sa problemy.

W czym sa zazwyczaj problemy?

Twoj projekt musi wiedzieć gdzie są hedery i pliki do zlinkowania. Projekt wymaga zlinkowania z Ogrem, OIS i Boost. Sam projekt przy uruchomieniu wymaga kilku parametrów, np katalog Media z przykladowymi obiektami 3d, teksturami itd, musi tez wiedziec gdzie w systemie masz plik renderera - wszystko jest w plikach *.cfg. W linuxie uzywamy renderera OpenGL - zazwyczaj wystarczy skopiowac katalog z demek, tam konfigi sa przygotowane, wszystkie pliki graficzne sa. Ogre zapisuje stan dzialania aplikacji do pliku ogre.log- duzo tam pomocnych informacji znajdziesz.

jak sprawdzić gdzie co mam?
find / | grep "nazwa pliku" - przeszuka caly system w poszukiwaniu pliku
dpkg -l | grep "nazwa pakietu" - czy pakiet jest zainstalowany?
dpkg -L "nazwa pakietu" - gdzie pakiet jest zainstalowany?

Dlaczego eclipse?

1. Tworzysz projekt ze zrodel -default Ogre project
2. Podajesz miejsce na dysku hederów Ogre, Ois
3. Linkujesz biblioteki *.a(Ogre,Ois,Boost),
Co ciekawe Ogre jest rozbity na kilka paczek do linkowania i ty linkujesz te ktore uzywasz.

Powodzenia.
Jak sie nie uda moge dodac screeny z mojego Eclipse, tez mam Ubuntu 14.
« Ostatnia zmiana: Maj 09, 2015, 01:36:23 wysłana przez conx »