Autor Wątek: OGRE a OPENGL  (Przeczytany 4071 razy)

Offline wspom2k5

  • Użytkownik

# Październik 07, 2010, 21:10:58
Do tej pory napisałem 'gre' w openglu (prosta mapa, banalni przeciwnicy z podstawami AI). Teraz jako projekt muszę zrobić grę wykorzystując silnik OGRE. Czy duża różnica będzie między tymi dwoma rozwiązaniami? Czy ciężko się z opengla bedzie przestawić na OGRE? Czy OGRE jest stosunkowo proste? Jest duzo info (najlepiej po polsku;p ) odnośnie tego silnika ?

Proszę o informacje/spostrzeżenia/porady.
Pozdrawiam

Offline Mr. Spam

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

Offline Adam7

  • Użytkownik
    • warsztat.gd

# Październik 07, 2010, 21:17:58
Ja nie spotkałem się z polskimi tutorialami do Ogra
Różnica między Ogre a OpenGLem... Ogre to silnik, a OpenGL to API czyli duża.
Info o Ogru jest dużo chociaż by wiki na stronie silnika i sporo sampli w sieci (nie po polsku:) )
« Ostatnia zmiana: Październik 07, 2010, 21:22:06 wysłana przez Adam7 »

Offline Avaj

  • Użytkownik

# Październik 07, 2010, 21:20:12
OGRE to silnik, a więc warstwa o wyższym poziomie niż OpenGL/DirectX. O ile w OpenGL/DX masz rzeczy typu: podpinanie bufora, tworzenie bufora, ustawianie stanów, przesyłanie kolorów, ustawianie atrybutów, o tyle w Ogre raczej masz rzeczy typu: narysuj mesh, ustaw kamerę itd.

Offline wspom2k5

  • Użytkownik

# Październik 07, 2010, 21:26:36
A czy OGRE jest "trudny" do wykorzystania?

Offline Snejk47

  • Użytkownik

# Październik 07, 2010, 21:31:06
A "Tworzenie gry w C# z użyciem silnika OGRE" Pana Mateusza Osowskiego?

@up
Nie jest trudny.

Offline Adam7

  • Użytkownik
    • warsztat.gd

# Październik 07, 2010, 21:40:09
A "Tworzenie gry w C# z użyciem silnika OGRE" Pana Mateusza Osowskiego?
No tak, zapomniałem o nim :).

Offline kuba

  • Użytkownik

# Październik 07, 2010, 21:49:36
A "Tworzenie gry w C# z użyciem silnika OGRE" Pana Mateusza Osowskiego?

@up
Nie jest trudny.
Nie wiem czy wiesz, ale Pan Mateusz Osowski jest stałym bywalcem Warsztatu i jak mniemam, nie dużo starszym od Ciebie ;)

Offline voytech

  • Użytkownik

# Październik 07, 2010, 23:14:40
http://forum.warsztat.gd/index.php/topic,19092.0.html   - w tym temacie Ogre w maksymalnym uproszczeniu, czyli "Gdzie jest główna pętla". Zamieszczony kod można łatwo rozszerzyć o ładowanie modeli i wyświetlanie ich co w zasadzie robi się automatycznie:

1. Na początku podanie miejsca z zasobami (skrypty, shadery, siatki, tekstury, itd.) wraz z wstępnym przetworzeniem skryptów:
Kod: (cpp) [Zaznacz]
//Resources
Ogre::ResourceGroupManager *res = Ogre::ResourceGroupManager::getSingletonPtr();
res->addResourceLocation("../data", "FileSystem");
res->initialiseAllResourceGroups();

//Loading meshes
loadMeshes(sm);

2. Następnie wczytanie modeli i umieszczenie ich na scenie:
Kod: (cpp) [Zaznacz]
void loadMeshes(Ogre::SceneManager *sm)
{
    Meshes meshes[] = {
        { "head", "head", "topo.mesh", {0.0f, 0.0f, 0.0f} },
        { "floor", "floor", "floor.mesh", {0.0f, -3.0f, 0.0f} },
        { "floor2", "floor2", "floor.mesh", {0.0f, -3.0f, -50.0f} }
    };

    Ogre::SceneNode *node = sm->getRootSceneNode()->createChildSceneNode( "main_node" );
    for (int i = 0; i < 3; ++i) {
        Ogre::Entity *ent = sm->createEntity( meshes[i].entname, meshes[i].meshname );
        node->attachObject( ent );
    };
}

Jak widać nie potrzeba dużo żeby na ekranie wyrenderowały się modele z efektami bumpmapping, relief, itp. Dzieje się tak dlatego że materiały, szadery, tekstury daje się w skrypty, dzięki temu wiele rzeczy można zrobić bez rekompilacji, na zewnątrz.

Z blendera model eksportujesz do pliku .xml i .material, a później OgreXMLConverter.exe zamienia .xml na wewnętrzny format .mesh, który możesz w wygodny sposób ładować w silniku (sm->createEntity(..)). Materiał opisuje się w pliku *.material w języku skryptowym, który jest dość dobrze opisany w dokumentacji. Jak używasz szaderów to do tego dochodzą jeszcze skrypty *.program oraz same szadery Cg, GLSL, HLSL w plikach tekstowych o dowolnym rozszerzeniu.

Jeżeli skrypty są poprawnie napisane to w zasadzie bez większego wysiłku otrzymujemy wyrenderowany model korzystający z normalmap, itd.

Offline Snejk47

  • Użytkownik

# Październik 08, 2010, 00:08:27
A "Tworzenie gry w C# z użyciem silnika OGRE" Pana Mateusza Osowskiego?

@up
Nie jest trudny.
Nie wiem czy wiesz, ale Pan Mateusz Osowski jest stałym bywalcem Warsztatu i jak mniemam, nie dużo starszym od Ciebie ;)

Wiem, ale mam szacunek do niego. Bardzo fajny artykuł (jak i reszta strony, którą dodałem do ulubionych ;))

Offline wspom2k5

  • Użytkownik

# Październik 08, 2010, 15:30:46
Dzieje się tak dlatego że materiały, szadery, tekstury daje się w skrypty, dzięki temu wiele rzeczy można zrobić bez rekompilacji, na zewnątrz.

Moglibyście coś więcej napisać o tych skryptach? Co to jest itp.?

Offline Adam7

  • Użytkownik
    • warsztat.gd

# Październik 08, 2010, 15:39:00
Skrypt jest to "program" który uruchamia się z poziomu aplikacji, krótko mówiąc.
więcej tu
« Ostatnia zmiana: Październik 08, 2010, 15:43:52 wysłana przez Adam7 »

Offline wspom2k5

  • Użytkownik

# Październik 08, 2010, 15:47:50
A czy są już takie gotowe skrypty czy trzeba będzie od podstaw pisać? W jakim języku najlepiej pisać skrypty pod OGRE

Offline Adam7

  • Użytkownik
    • warsztat.gd

# Październik 08, 2010, 15:51:20
Pewnie są, tylko trzeba ich poszukać.
http://www.isxgames.com/forums/showthread.php?t=3790 może to
« Ostatnia zmiana: Październik 08, 2010, 15:56:17 wysłana przez Adam7 »

Offline hfjh

  • Użytkownik

# Październik 08, 2010, 16:06:40
Na wikibooks jest kilka oryginalnych tutoriali przetłumaczonych na polski, może Ci się przydadzą.

Offline voytech

  • Użytkownik

# Październik 08, 2010, 19:17:21
Moglibyście coś więcej napisać o tych skryptach? Co to jest itp.?

Skrypty w Ogre to nic zaawansowanego. Bardziej przypominają pliki konfiguracyjne, np. prosta definicja materiału:
Kod: (cpp) [Zaznacz]
material topo_mat
{
receive_shadows on
technique
{
pass
{
ambient 1.000000 1.000000 1.000000 1.000000
diffuse 0.700862 0.536997 0.439831 1.000000
specular 0.500000 0.500000 0.500000 1.000000 12.500000
emissive 0.000000 0.000000 0.000000 1.000000
texture_unit
{
texture human_nm.png
tex_address_mode wrap
filtering trilinear
colour_op alpha_blend
}
}
}
}

Zamiast tworzyć jakiś obiekt Ogre::Material i wywoływać poszczególne metody, żeby ustawiać odpowiednie parametry oświetlenia i przy każdej zmianie rekompilować program, to stworzono możliwość automatycznego tworzenia materiału i jego edycji na zewnątrz w pliku tekstowym. Ot cała filozofia. Więcej znajdziesz w rozdziale 3 manuala: http://www.ogre3d.org/docs/manual/manual_toc.html#SEC_Contents

Warto też poczytać wiki Ogra: http://www.ogre3d.org/tikiwiki/tiki-index.php. Tutoriale moża ale chyba bardziej przydatne są Code Snippets: http://www.ogre3d.org/tikiwiki/Snippets