játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5455
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2521

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2189
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] > 8 < [9] [10] [15]
ibax - Tag | 154 hsz       Online status #98751   2008.11.09 05:09 GMT+1 óra  
igen, próbáltam...
bár a setMaterialName sor nélkül is ugyanaz történik...

ez a kódrészlet...
Kód:
void createScene(void)
    {
mSceneMgr->setAmbientLight(ColourValue(0.7f,0.7f, 0.7f));
mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE);
mSceneMgr->setSkyDome(true, "Examples/CloudySky", 5, 8);

mEntity = mSceneMgr->createEntity("ElaHouse","proba.mesh");
mEntity->setMaterialName("proba.material");

mNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("ElaNode",Vector3(0.0f,0.0f,0.0f));
mNode->attachObject(mEntity);

    }


ez pedig a proba.material nevü file...
Kód:
material lambert2
{
technique
{
pass
{
ambient 0 0 0 1
diffuse 0.1475 0.30166 0.5 1
specular 0 0 0 1
emissive 0 0 0
}
}
}
material blinn1
{
technique
{
pass
{
ambient 0 0 0 1
diffuse 0.5 0.285 0.482693 1
specular 0.5 0.5 0.5 3.33333
emissive 0 0 0
}
}
}


és sajnos ez lesz az eredmény...

775-screenshot_1.png
   
MaximumViolence - Törzstag | 1020 hsz       Online status #98649   2008.11.08 06:35 GMT+1 óra  
fény van? kódból is beállítottad a materialt?
Kód:
yourEntity->setMaterialName("MaterialName");
Ez egy reszeg post...

   
ibax - Tag | 154 hsz       Online status #98648   2008.11.08 06:08 GMT+1 óra  
sziasztok,

Maya-ban készítem a modellt, amit az Ogre-ben használni akarok, azonban miután mesh-re alakítom át, és betöltöm az Ogre-ba, teljesen fekete lesz minden objektumom...

ez számomra érthetetlen...

arra odafigyeltem, hogy a textúra file-okat, illetve a material kiterjesztésü file-okat jó helyre tegyem, az ogre.log nem is jelez ilyen jellegü hibát... én valamilyen megjelenítési, esetleg D3D hibára gyanakszom, csak nem tudom, mi okozhatta...

találkozott már valaki hasonló problémával? jól jönne minden segítség, mert nagyon elakadtam...
   
Csizmás Kandur - Tag | 436 hsz       Online status #98412   2008.11.05 06:20 GMT+1 óra  
Nálam így indult anno, csak most más lett a kód,ahogy látom:
Kód:
void MyPhysics::InitializeAgeia()
{
    _aWorld = new world(_mRoot);
    _aWorld->simulate(1/60);
    _aScene = _aWorld->createScene("Main", _mSceneMgr);

    LogManager::getSingletonPtr()->logMessage("initialize Ageia world");
}


Ezt behívtam itt:
Kód:
void createScene(void)
{
    MyPhysics::instance->InitializeAgeia();
}


A háttrében meg történnek az OGRE-s pointerek átadása az nx-nek és innntől már használható.

Szerk.: Amit belinkeltél kód most valószínűleg az az aktuális. Az szerint van a padló, alap gravitáció és kész. Billentyű ütésre,vagy valamilyen eseményre bedobhatsz egy kockát, vagy valamit a padló föl és és akkor leesik, vagy pattog, attól függően,hogy milyen anyagból van. Alapból szerintem van valami default anyaga. Egyszerűbb testeknél lehet primitíveket használni (kocka, gömb,henger stb) a mesh betöltését az nxOGRE ráfűzi a neki átadott pointerrel ahova kell, viszont innentől ez már az ő hatásköre attól függetlenül, hogy ebben a jelenetben van.

Ezt a hozzászólást Csizmás Kandur módosította (2008.11.05 06:34 GMT+1 óra, ---)
dynamic calc = GetCalculator();
var sum = calc.Add(10, 20);
   
ibax - Tag | 154 hsz       Online status #98411   2008.11.05 06:03 GMT+1 óra  
szia,

hát amire nekem leginkább szükségem lenne, az egy összerakott cpp file mondjuk, ami lefordul VS alatt, és amiből már látni fogom az összefüggéseket...

az ogre-s wiki oldalak is azért voltak nagyon hasznosak, mert komplett kódrészletekből raktunk össze egy cpp file-t, ami utána szépen le is futott...

az oldal, ahogy írtad is, kódsorokat közöl, most fogok nekiállni "kiismerni" magam benne...

ha esetleg valakinek van egy NxOgre-t is alkalmazó, futtatható példaprogija, szívesen fogadom... )

van ez a kódrészlet:
Kód:
#include <NxOgre.h>
using namespace NxOgre;

...

World *mWorld = new World("time-controller: ogre");
Scene* mScene = mWorld->createScene("Main",  "gravity: yes, floor: yes, renderer: ogre");
for (int i=0; i < 50; i++)
    Body *myBody = mScene->createBody("Yellow-Cube;cube.1m.mesh", new Cube(1,1,1), Vector3(0,0.5 + i,0), "mass: 10");


ezzel az a gondom, hogy igazából nem látom az összefüggést az Ogre és az NxOgre között. Úgy gondolnám első nekifutásra, hogy ez egy kiindulási pont, amibe fele van építve egy alap gravitáció (a gravity és a floor "yes" mivolta miatt semmi sem esik "lejjebb" a 0 magasságnál)... jól gondolom? tehát ha ezt a kódrészletet bemásolom egy cpp file-ba, majd létrehozok ogre-vel egy-két objektumot, elhelyezem a jelenetemben valamilyen magasságban, akkor le fognak talán esni azok?

amint hazaértem munkahelyről, nekilátok, addig bármilyen segítséget szívesen fogadok...
   
Csizmás Kandur - Tag | 436 hsz       Online status #98409   2008.11.05 05:45 GMT+1 óra  
Idézet
ibax :
találtam egy tutorial-szerüséget az NxOgre-hoz, ha van kedvetek, nézzétek meg ti is...

a nagyok azért, hogy mennyire használható...
az újak meg azért, mert több mint a semmi )))

http://ogre.irados.org/textos/bibliotecas/NxParte1.htm

ez portugálul van, amin könnyen segít pl ez a webpage fordító:

http://babelfish.yahoo.com/


Ez nem két napos meló lesz kiismerni, de onnantól már pár perc összerakni egyszerűbb jeleneteket. Ha van kérdésed kérdezz. Csináltam vele sokféle tesztet, sőt még a libet is farigcsáltam.
dynamic calc = GetCalculator();
var sum = calc.Add(10, 20);
   
ibax - Tag | 154 hsz       Online status #98406   2008.11.05 05:07 GMT+1 óra  
találtam egy tutorial-szerüséget az NxOgre-hoz, ha van kedvetek, nézzétek meg ti is...

a nagyok azért, hogy mennyire használható...
az újak meg azért, mert több mint a semmi )))

http://ogre.irados.org/textos/bibliotecas/NxParte1.htm

ez portugálul van, amin könnyen segít pl ez a webpage fordító:

http://babelfish.yahoo.com/

Ezt a hozzászólást ibax módosította (2008.11.05 05:20 GMT+1 óra, ---)
   
Csizmás Kandur - Tag | 436 hsz       Online status #98401   2008.11.05 04:35 GMT+1 óra  
Ez tényleg attól függ mi acél. Csak mászkálásra nem kell fizika,de tárgyak lökdöséséhez már nem árt. Néztem anno más fizika wrappereket is, de az nx a legtriviálisabb. Na persze, ha bele kell nyúlni libbe az kemény, mert semmi doksi, uml, vagy akármi.
dynamic calc = GetCalculator();
var sum = calc.Add(10, 20);
   
ibax - Tag | 154 hsz       Online status #98397   2008.11.05 04:18 GMT+1 óra  
diplomamunka persze hogy saját munka...

de először meg kellett alkotni egy virtuális valóságot, amit betölthetek, használhatok, továbbá a modellben járkálva mindenféle feladatokat végrehajtani, aminek az eredményeit egy adatbázisban letárolni, ezt kiértékelni, statisztikát készíteni, html formátumban megjeleníteni, stb...

szóval azért volt vele munka keményen...

és persze az uccsó félévben a hajrá miatt egy-két dologra nem maradt időm, pedig szerettem volna megvalósítani, ezért is folytatom.

és félreértés ne essék, én teljesen új vagyok az Ogre-ban, mert az eredeti verzió irrLicht alatt készült, de sajnos voltak technikai gondok, pl fényhatások, árnyékok, amik sokat rontottak a kinézeten, és nem sikerült megoldást találnom rá az irrLichtben... ekkor jött az ötlet, hogy talán máshol kéne próbálkozni, ezért szeretném az egészet újra megcsinálni Ogre-ben, valamint kipótolni a hiányosságokat, és továbbfejleszteni... nyilván nem csak a "sok szabadidőm" miatt foglalkozok vele, ..., de ez már nem ide tartozik...

egyelőre ugyanaz a funkcionalitás kéne, ami eddig is volt... megvan a ház modellje, azt bármibe ki tudok exportálni, betölteni a modellt ogre-be, és bejárhatóvá tenni...

egyelőre ez a cél, aztán jöhet a többi )))
   
Csizmás Kandur - Tag | 436 hsz       Online status #98386   2008.11.05 03:32 GMT+1 óra  
Idézet
MaximumViolence :
nem veszi ki a kezed alól a mesh managementet sem


[body]->getEntity()->...

ibax: Egyébként adiploma munkához nem saját munkát kell beadni? Az OGRE meg az nxOGRE alád pakol mindent, akkor mi ebben a munka?

Ezt a hozzászólást Csizmás Kandur módosította (2008.11.05 03:37 GMT+1 óra, ---)
dynamic calc = GetCalculator();
var sum = calc.Add(10, 20);
   
MaximumViolence - Törzstag | 1020 hsz       Online status #98385   2008.11.05 03:05 GMT+1 óra  
én nem használtam nxogre-t,a newton sdk szimpatikusabb,nem veszi ki a kezed alól a mesh managementet sem,ezzel a wrapperrel próbáld ki.
Ez egy reszeg post...

   
Csizmás Kandur - Tag | 436 hsz       Online status #98381   2008.11.05 02:26 GMT+1 óra  
Idézet
ibax :
nem FPS játék lesz, csupán a diplomamunkámat folytatom...

nekem az is elegendő lenne, ha lenne egy két alap kód(részlet), amiben megmutatják, hogy hogyan kell integrálni az ogre-ba a physX-et, mert azzal már talán el tudnék indulni.

az általad javasolt link talán segít majd ebben, köszi szépen

esetleg te (vagy itt bárki más) foglalkoztál már NxOgre-vel?


Próbálgattam már igen. Annyi, hogy a befordított libet kell linkelned és használni, mint bármilyen más libet.
dynamic calc = GetCalculator();
var sum = calc.Add(10, 20);
   
ibax - Tag | 154 hsz       Online status #98380   2008.11.05 02:17 GMT+1 óra  
nem FPS játék lesz, csupán a diplomamunkámat folytatom...

nekem az is elegendő lenne, ha lenne egy két alap kód(részlet), amiben megmutatják, hogy hogyan kell integrálni az ogre-ba a physX-et, mert azzal már talán el tudnék indulni.

az általad javasolt link talán segít majd ebben, köszi szépen

esetleg te (vagy itt bárki más) foglalkoztál már NxOgre-vel?
   
Csizmás Kandur - Tag | 436 hsz       Online status #98378   2008.11.05 02:08 GMT+1 óra  
Ha már tárgyakat szeretnél lökdösni, amik gurulnak, nekimennek a falnak stb. ahhoz már kell a fizika. És ha már kell, akkor egyszerűbb egyúttal a mászkálást is azzal megoldani.

Ez most FPS játék lesz?

Idézet
ibax :
igazából az NxOgre-t találtam (keresgélés után) a legmegfelelöbbnek, csupán tutorialokban hiányos. fórumjai persze vannak, de ha lenne egy olyan wiki-s oldala, mint az ogre-nek, egyszerübb lenne a "kezdők" dolga is...


Hát az sajnos nem nagyon van így marad az intellisense és a forrás elemzése + fórum. Kis kezdemény már alakul.

Padló, grav már helyből van. Ehhez csak be kell tölteni a modelleket és kész.
dynamic calc = GetCalculator();
var sum = calc.Add(10, 20);
   
ibax - Tag | 154 hsz       Online status #98375   2008.11.05 01:51 GMT+1 óra  
teljesen jó MaximumViolence meglátása... ezzel megoldható lenne...

ezt a tutorialt már ismertem, sőt ezeken már végig is mentem, és nagyon hasznosnak bizonyultak. esetemben azonban egy házban kéne sétálnom, lépcsőknek, bútoroknak, falaknak ütközve. ehhez kéne nekem az ütközésdetektálás, sőt a kisebb objektumokat akár "odébb" is lehetne tolni. persze ez nem tudom milyen erőfeszítéseket igényel, mindenesetre lényegesen "életszerübb" lenne...

igazából az NxOgre-t találtam (keresgélés után) a legmegfelelöbbnek, csupán tutorialokban hiányos. fórumjai persze vannak, de ha lenne egy olyan wiki-s oldala, mint az ogre-nek, egyszerübb lenne a "kezdők" dolga is...

Igy marad az olvasgatás, keresgélés, fórumozás, stb...

Minden segítséget szívesen fogadok... ))
   
MaximumViolence - Törzstag | 1020 hsz       Online status #98349   2008.11.04 11:48 GMT+1 óra  
Idézet
ibax :
ezek szerint találnom kéne tutorial-okat a physX telepítése után...
nemsokára hazaérek, utánanézek, köszönöm a tippet.

nekem collision detection amiatt kell, hogy egy házban tudjak mászkálni... vagyis ne essek le a semmibe (ütközésdetektálás a talaj és köztem), valamint ne tudjak átmenni a falon, dolgokon. a ház modell maya-ban már megvan, gondolom valahogy majd át tudom exportálni ogre által emészthető formátumra, utána meg beolvasni, és ebben a házban szeretnék mászkálni...

köszi a tippet


ha csak ütközésvizsgálat kell,semmi komolyabb,akkor nem kell physX,egyszerűbb ez a tutorial
Ez egy reszeg post...

   
Csizmás Kandur - Tag | 436 hsz       Online status #98321   2008.11.04 07:11 GMT+1 óra  
Pályához:
Kód:
_aScene->createBody("", new TriangleMeshShape("myHouse.mesh"),  Ogre::Vector3::ZERO),  "mass: 1, static: yes");


Dinamikus labda objektumhoz::
Kód:
ballMaterial = _aScene->createMaterial("ballMaterial");
ballMaterial->setAll(1.0, 0.1, 0.1); //bounce, dFriction, sFriction;

ball1 = _aScene->createBody("ball.mesh", new SphereShape(1.0, "material: ballMaterial"),  pos, "mass: 100.0");

ball1->setLinearVelocity(Ogre::Vector3::ZERO);
ball1->setLinearMomentum(Ogre::Vector3::ZERO);
ball1->setAngularVelocity(Ogre::Vector3::ZERO);
//stb


A szintaxis alapjaiban változik verzióról-verzióra, szóval ki tudja most milyen. Fórumon biztos van rá tipp.

Na most a pályánál nem mindegy mit töltesz be. A fenti példában láthatatlan a fizikai object ezegy nagyonlow poly model. És ami látszik azt sima ogre betöltéssel lehet hype-osabbra. Így lehet optimalizálni.

Szerk.: Ami talán az elején zavaró, vagy nekem legalábbis újszerű volt elsőre, az az, hogy fizikai modellt ha betöltök, akkor a mesh is hozzá van csatolva. Mozgatni, növelni, vagy bármit csinálni innentől kezdve csak a body-val lehet a mesh automatikusan frissül hozzá pozicióban, méretben stb. Képzeletben mindig egy láthatatlan fizikai objektumot kell odaképzelni a láthatóban, csak ez valamikor egybe van csatolva máskor meg célszerű külön választani/különkezelni egymástól.

Ezt a hozzászólást Csizmás Kandur módosította (2008.11.04 07:28 GMT+1 óra, ---)
dynamic calc = GetCalculator();
var sum = calc.Add(10, 20);
   
Csizmás Kandur - Tag | 436 hsz       Online status #98318   2008.11.04 07:04 GMT+1 óra  
Idézet
ibax :
ezek szerint találnom kéne tutorial-okat a physX telepítése után...
nemsokára hazaérek, utánanézek, köszönöm a tippet.

nekem collision detection amiatt kell, hogy egy házban tudjak mászkálni... vagyis ne essek le a semmibe (ütközésdetektálás a talaj és köztem), valamint ne tudjak átmenni a falon, dolgokon. a ház modell maya-ban már megvan, gondolom valahogy majd át tudom exportálni ogre által emészthető formátumra, utána meg beolvasni, és ebben a házban szeretnék mászkálni...

köszi a tippet


Ja, ahhoz semmit nem kell külön csinálnod. Egyszerűen createBody, meg create static mesh meg ilyenek a többit a PhysX elintézi. NXOgre fórumon vannak kódtöredékek azokból össze lehet rakni,mivel ez a physX-re épülő wrapper aphysX-et csak akkor kell tanulmányozni, ha valamit nem értesz.
dynamic calc = GetCalculator();
var sum = calc.Add(10, 20);
   
ibax - Tag | 154 hsz       Online status #98317   2008.11.04 07:01 GMT+1 óra  
ezek szerint találnom kéne tutorial-okat a physX telepítése után...
nemsokára hazaérek, utánanézek, köszönöm a tippet.

nekem collision detection amiatt kell, hogy egy házban tudjak mászkálni... vagyis ne essek le a semmibe (ütközésdetektálás a talaj és köztem), valamint ne tudjak átmenni a falon, dolgokon. a ház modell maya-ban már megvan, gondolom valahogy majd át tudom exportálni ogre által emészthető formátumra, utána meg beolvasni, és ebben a házban szeretnék mászkálni...

köszi a tippet
   
Csizmás Kandur - Tag | 436 hsz       Online status #98314   2008.11.04 06:45 GMT+1 óra  
Idézet
ibax :
sziasztok,

Tudnátok nekem Ogre-hoz valami tutorialt ajánlani, amiben foglalkoznak a Collision Detection-nal?

letöltöttem, telepítettem az NxOgre nevü PhysX kiegészítést Ogre-hoz, még nem sikerült teljesen lefordítani (nem jutott tegnap időm rá), tehát elvileg az előkészületek megvannak, most már csak látni kéne, hogy hogyan müködik...

folyamatosan guglizok is, persze

az ogre-s tutorialokon túl vagyok már, szeretném megvalósítani az ötleteimet, ehhez collision detection is kell... ha esetleg tudtok valami példaprogramot, kódrészletet küldeni, nekem az is megfelelő lenne...

köszi előre is a segítséget


PhysX-ben keress rá Touch és a Trigger tutorokra, mert többféle ütközés detektálás lehetséges. Trigger az a focikapu és focilabda esete, onTouch meg mondjuk két dinamikus objektum ütközése, érintkezése. Színtiszta ogre-ben pedig bounding box van, de az megint teljesen más.

Kód:
_aScene->mContactReporter->addReporter(new Collision());
_aScene->createContactPair(ball1, ball2, false, true, false); //on touch


Kód:
bool onTouch(body *a, body *b)
{
    if(a->getName() == "ball1" && b->getName() == "ball2") //itt most nagyot ütköztek

    return true;
}


Ilyesmi.

Ezt a hozzászólást Csizmás Kandur módosította (2008.11.04 06:54 GMT+1 óra, ---)
dynamic calc = GetCalculator();
var sum = calc.Add(10, 20);
   
ibax - Tag | 154 hsz       Online status #98312   2008.11.04 06:19 GMT+1 óra  
sziasztok,

Tudnátok nekem Ogre-hoz valami tutorialt ajánlani, amiben foglalkoznak a Collision Detection-nal?

letöltöttem, telepítettem az NxOgre nevü PhysX kiegészítést Ogre-hoz, még nem sikerült teljesen lefordítani (nem jutott tegnap időm rá), tehát elvileg az előkészületek megvannak, most már csak látni kéne, hogy hogyan müködik...

folyamatosan guglizok is, persze

az ogre-s tutorialokon túl vagyok már, szeretném megvalósítani az ötleteimet, ehhez collision detection is kell... ha esetleg tudtok valami példaprogramot, kódrészletet küldeni, nekem az is megfelelő lenne...

köszi előre is a segítséget
   
Attila - Tag | 2 hsz       Online status #97840   2008.10.30 04:34 GMT+1 óra  
Sziasztok!

Van itt valaki, aki ért a játékfejlesztéshez és profi 3D megjelenítéseket tudna csinálni egy programhoz (c++)?! Fizetös munka lenne, azaz 50-75e Ft-ot fizetnék.

Akit érdekel, az írjon nekem egy e-mailt az attila_nagy@hotmail.com -ra és bövebb infókat is adok.

Üdv.
Attila

   
kicsy - Szerkesztő | 4304 hsz       Online status #97303   2008.10.21 06:20 GMT+1 óra  
// Előbbinél a hátterek úgytudom előre rendereltek, kissé megtévesztő a videó.
kicsy ● SilentVertigo Team - project Solarah
http://blog.yscik.com
   
Csizmás Kandur - Tag | 436 hsz       Online status #97296   2008.10.21 04:34 GMT+1 óra  
Nem rossz tényleg ez az OGRE:
The Ugly Prince Duckling
MOTORM4X


Neki is kezdek a project tervezésnek hétvégén.
dynamic calc = GetCalculator();
var sum = calc.Add(10, 20);
   
Elf - Törzstag | 932 hsz       Online status #97210   2008.10.18 14:07 GMT+1 óra  
Idézet
Csizmás Kandur :
OpenAL az sokminden csak nem egyszerű.



Esetleg egy próbát megér a BASS audio lib. is. Szinte mindenhez van: C/C++, Delphi, Visual Basic, és MASM.

http://www.un4seen.com/
I, Robot
1. A robotnak nem szabad kárt okoznia emberi lényben.
2. A robot engedelmeskedni tartozik az emberi lények utasításainak.
3. A robot tartozik saját védelméről gondoskodni.
   
ibax - Tag | 154 hsz       Online status #97184   2008.10.18 05:10 GMT+1 óra  
Tudom hogy ez nem ide tartozik, de akkor összehasonlításként mondom, hogy az irrLicht-tel csak egy bajom volt: hogy nem sikerült normálisan megjelenítenem a fényeket és az árnyékokat. És emiatt elég csúnya lett a kinézet. Az irrLichtben elég alap fénytípusok vannak, a Maya-ban alkalmazott fénytípusaim pedig "elvesztek" a konvertálás során.

Elvileg az Ogre ezeket a dolgokat sokkal jobban kezelik, ezért döntöttem a váltás mellett (a megfelelő kinézet miatt)
   
Csizmás Kandur - Tag | 436 hsz       Online status #97173   2008.10.18 03:40 GMT+1 óra  
Idézet
ibax :
Oké, örülök a válasznak.

Pár helyen azt olvastam, hogy maga az Ogre csupán egy 3D-s renderelő (ami lényegében akkor igaz is), viszont a megfelelő addonok (irrKlang, OIS) segítségével pedig már hangot is le tudok játszani, illetve tudom kezelni az egeret/billentyüzetet (valahogy)

Ezért vannak a tutoriálok, köszönöm a tippet.

SQLite-val pedig akár adatbázist is pillanatok alatt hozzá lehet csapni a progihoz (tapasztalat!)...

így lesz a semmiből NeedForSpeed ))


Elvi lehetőséged megvan sokmindenre, csak azért olyan komoly szinthez már szét kell patkolni a motort, meg kell pár miller a grafikusoknak is. A galériában egyre komolyabb kinézetű játékok vannak, többek közt kereskedelmiek is.

Egyébként Irrlicht-hez is csatolhatsz, ami jól esik, tök mindegy, hogy párhuzamosan még pluszban megy a zenelejátszás, hálózat, vagy a fizika is.
dynamic calc = GetCalculator();
var sum = calc.Add(10, 20);
   
ibax - Tag | 154 hsz       Online status #97172   2008.10.18 03:31 GMT+1 óra  
Oké, örülök a válasznak.

Pár helyen azt olvastam, hogy maga az Ogre csupán egy 3D-s renderelő (ami lényegében akkor igaz is), viszont a megfelelő addonok (irrKlang, OIS) segítségével pedig már hangot is le tudok játszani, illetve tudom kezelni az egeret/billentyüzetet (valahogy)

Ezért vannak a tutoriálok, köszönöm a tippet.

SQLite-val pedig akár adatbázist is pillanatok alatt hozzá lehet csapni a progihoz (tapasztalat!)...

így lesz a semmiből NeedForSpeed ))
   
Csizmás Kandur - Tag | 436 hsz       Online status #97169   2008.10.18 02:25 GMT+1 óra  
Idézet
ibax :
ezek szerint úgy fogható fel ez az egész, hogy az Ogre a megfelelő pluginekkel már lehetőséget ad egy 3D-s (vagy másmilyen) alkalmazás létrehozásához?

Audiónal az openAL-t olvastam szinte minden fórumon.. de már nem emlékszem, hogy az egyszerü telepítés, használat, vagy mi miatt...
az OIS segítségével lehet kezelni az input eszközöket?


OGRE-hez azt használsz szabadon, ami jól esik. Vannak addon-ok is.

OpenAL az sokminden csak nem egyszerű. Az irrlicth-es múltaddal a helyedben az IrrKlang ot nézném meg. Hihetelenül egyszerű akár 3D hangokhoz is.
OGRE OIS önmagáért beszél, de az ogre példákban is benne kell lennie.

Ezt a hozzászólást Csizmás Kandur módosította (2008.10.18 02:31 GMT+1 óra, ---)
dynamic calc = GetCalculator();
var sum = calc.Add(10, 20);
   
ibax - Tag | 154 hsz       Online status #97168   2008.10.18 02:18 GMT+1 óra  
ezek szerint úgy fogható fel ez az egész, hogy az Ogre a megfelelő pluginekkel már lehetőséget ad egy 3D-s (vagy másmilyen) alkalmazás létrehozásához?

Audiónal az openAL-t olvastam szinte minden fórumon.. de már nem emlékszem, hogy az egyszerü telepítés, használat, vagy mi miatt...
az OIS segítségével lehet kezelni az input eszközöket?
   
Csizmás Kandur - Tag | 436 hsz       Online status #97163   2008.10.17 23:52 GMT+1 óra  
Idézet
ibax :
Sziasztok

Én amolyan NEWBIE lennék az Ogre-hoz. Szeretném megtanulni a használatát... Régebben irrLicht-et használtam, de kevésnek bizonyult (fények, árnyékok nem megfelelő használata, beépített fények minimális beállítási lehetőségei,stb). Úgy tudom, az Ogre jóval többet tud (?), de nehezebb az elsajátítása is...

Viszont lehet olvasni az Ogre-ról is negatívumokat. Van, ahol azt írják, hogy "csak" egy renderelő... Nekem egy olyan 3D Engine kell, amiben a bemeneti eszközöket tudom figyelni (egér, billentyü), zenefileokat tudok lejátszani, 3D modelleket tudok betölteni, megjeleníteni, kattintani rájuk, stb. Tehát egy teljes 3D Engine...


Engem is érdekel a téma. Amit tudok ezzel kapcsolatban írni:
OGRE az magában 3D render és van benne egyalap 2D GUI is.
input az OIS: egér, bill, joystic (xbox?), beépített
komolyabb GUI: CEGUI, beépített
audio: openAL, irrklang, fmod, de ezt neked kell hozzárakni, wrapperelni, ami irrklang-nál kb 10 soros class. Ez ismerős lehet az irrlicht-ből.
fizika: ode beépített, nxOgre pedig Nvidia PhysX, ha jól tudom, ogre-hez van wrapperelve
hálózat: raknet

OGRE demók: OGRE precompiled samples
Itt vannak az SDK-ból lefordított példaprogramok. Árnyék az nem valami gyors. Úgy olvastam, hogy directX 10-et is fogjatámogatni, úgyhogy ott biztos lesz jobb megoldás. direcx9-nél nemtudom mik a shaderes lehetőségek.
dynamic calc = GetCalculator();
var sum = calc.Add(10, 20);
   
ibax - Tag | 154 hsz       Online status #97162   2008.10.17 22:16 GMT+1 óra  
Sziasztok

Én amolyan NEWBIE lennék az Ogre-hoz. Szeretném megtanulni a használatát... Régebben irrLicht-et használtam, de kevésnek bizonyult (fények, árnyékok nem megfelelő használata, beépített fények minimális beállítási lehetőségei,stb). Úgy tudom, az Ogre jóval többet tud (?), de nehezebb az elsajátítása is...

Viszont lehet olvasni az Ogre-ról is negatívumokat. Van, ahol azt írják, hogy "csak" egy renderelő... Nekem egy olyan 3D Engine kell, amiben a bemeneti eszközöket tudom figyelni (egér, billentyü), zenefileokat tudok lejátszani, 3D modelleket tudok betölteni, megjeleníteni, kattintani rájuk, stb. Tehát egy teljes 3D Engine...

Szerintetek az Ogre ezekre megfelelő? A hivatalos oldalon ezt olvastam:
OGRE (Object-Oriented Graphics Rendering Engine) is a scene-oriented, flexible 3D engine...
http://www.ogre3d.org/index.php?option=com_content&task=view&id=19

Továbbá lenne egy kérdésem is Ogre-val kapcsolatban...

Elkezdtem ezt a tutorialt:
http://artis.imag.fr/~Xavier.Decoret/resources/ogre/tutorial1.html

Amikor odáig jutok, hogy begépelem a

Kód:
    if (!mRoot->restoreConfig())
    {
      if (!mRoot->showConfigDialog())
      {
        return 1;
      }
    }
    RenderWindow* mWindow = mRoot->initialise(true,"Application");


sorokat, akkor futás után elvileg meg kellene jelennie az Ogre által felismert renderelők listájának, hogy kiválaszthassam, melyiket használjam?? Csak mert miután begépeltem szépen a "STEP A" részt, a progi annyit csinál, hogy lefut, és egy fekete képernyőt látok, amiből az ablak bezárásával tudok csak kilépni...

Annak már utánaolvastam, hogy ha egyszer kiválasztottam egy renderelőt (mondjuk OpenGL), akkor többször már nem kínálja fel a renderelő-kiválasztó ablakot, csak ha törlöm a konfig file-t. Itt is ez lehet a dolgok háta mögött?
   
TPG - Tag | 3402 hsz       Online status #96113   2008.09.20 07:32 GMT+1 óra  
Idézet
gaborlabor :
OIS-t szeretném használni a progimban input kezelésére. A gond az, hogy tutorialokból van vagy 2 db, az is mind ogre-s.
Ezzel kezdtem volna, de már az elején elakadtam.
Az inicializálásban van egy ilyen sor:
Kód:
m_win->getCustomAttribute("WINDOW", &windowHnd);

Magyarázatként pedig:
Line 4 populates the size_t object with the window handle. 'm_win' in this example is a pointer to an initialised Ogre::RenderWindow

Nekem nincs initialised Ogre::RenderWindow-om, nem is lesz.

Ezért az ogréhez értő embereket kérdezném, hogy mégis mit csinál az említett sor, hogyan/mivel tudom helyettesíteni akkor ha csak szimplán winapi-val hozok létre ablakot.
Elsőre azt gondoltam, hogy a létrehozott ablak hwnd-jét adja meg, de a példában a windowHnd változó size_t típusú.

Any idea?


Irrlicht-el való házasítás Initialize fv-je (az eleje a lényeg):

Kód:
int COIS::initialize()
{
    int result=0;
    unsigned int* p=(unsigned int*)&m_windowHandle;
    char buf[32];
    ParamList pl;

    if(!m_device)
        return 1;

    m_gui = m_device->getGUIEnvironment();

#ifdef _IRR_WINDOWS_
    //
    // replace irrlicht wndproc with ours to make ois work properly.
    //
    HWND hwnd = (HWND)(m_device->getVideoDriver()->getExposedVideoData().OpenGLWin32.HWnd);
    m_oldWndProc = GetWindowLongPtr(hwnd, GWL_WNDPROC);
    SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG)((LONG_PTR)_wndProc));
    m_windowHandle = (void *)hwnd;
    //Default mode is foreground exclusive..but, we want to show mouse - so nonexclusive
    pl.insert(std::make_pair("w32_mouse", "DISCL_FOREGROUND"));

    if(m_showCursor)
        pl.insert(std::make_pair("w32_mouse", "DISCL_NONEXCLUSIVE"));
    else pl.insert(std::make_pair("w32_mouse", "DISCL_EXCLUSIVE"));
#else

    m_windowHandle = (void *)m_device->getVideoDriver()->getExposedVideoData().OpenGLLinux.X11WindowId;
    m_display = (int)m_device->getVideoDriver()->getExposedVideoData().OpenGLLinux.X11Display;
    pl.insert(std::make_pair("x11_keyboard_grab","false"));
    if(m_showCursor)
    {
        pl.insert(std::make_pair("x11_mouse_grab","false"));
        pl.insert(std::make_pair("x11_mouse_hide","false"));
    }
    else
    {
        pl.insert(std::make_pair("x11_mouse_grab","true"));
        pl.insert(std::make_pair("x11_mouse_hide","true"));
    }
#endif


    sprintf(buf,"%u",*p);
    pl.insert(std::make_pair( "WINDOW", buf ));


    //This never returns null.. it will raise an exception on errors

    m_inputManager = InputManager::createInputSystem(pl);

    unsigned int v = m_inputManager->getVersionNumber();

    if(m_debugEnabled)
    {
        printf("OIS Version: %d.%d.%d\n", (v>>16 ),((v>>8) & 0x000000FF),(v & 0x000000FF));
        printf("Release Name: %s\n", m_inputManager->getVersionName().c_str());
        printf("Manager: %s\n", m_inputManager->inputSystemName().c_str());
        printf("Total Keyboards: %d\n", m_inputManager->getNumberOfDevices(OISKeyboard));
        printf("Total Mice: %d\n", m_inputManager->getNumberOfDevices(OISMouse));
        printf("Total JoySticks: %d\n", m_inputManager->getNumberOfDevices(OISJoyStick));
    }

    //List all devices
    OIS::DeviceList list = m_inputManager->listFreeDevices();
    for( DeviceList::iterator i = list.begin(); i != list.end(); ++i )
        if(m_debugEnabled)
            printf("   Device: %s, Vendor %s\n",g_DeviceType[i->first],i->second.c_str());

    //Create all devices (We only catch joystick exceptions here, as, most people have Key/Mouse)
    m_keyboard = static_cast<Keyboard*>(m_inputManager->createInputObject( OISKeyboard, m_buffered ));
    m_mouse = static_cast<Mouse*>(m_inputManager->createInputObject( OISMouse, m_buffered ));

    m_keyboard->setEventCallback( this );
    m_mouse->setEventCallback( this );

    try
    {
        //This demo uses at most MAX_JOYS joysticks
        m_numSticks = m_inputManager->getNumberOfDevices(OISJoyStick);
        if(m_numSticks > MAX_JOYS)
            m_numSticks = MAX_JOYS;
        for( u32 i = 0; i < m_numSticks; ++i )
        {
            m_joys[i] = (JoyStick*)m_inputManager->createInputObject( OISJoyStick, m_buffered );
            m_joys[i]->setEventCallback( this );

            if(m_debugEnabled)
                printf("\nJoystick %d - ", i+1);
            //Check for FF, if so, dump info
            m_ff[i] = (ForceFeedback*)m_joys[i]->queryInterface( Interface::ForceFeedback );
            if( m_ff[i] )
            {
                if(m_debugEnabled)
                    printf(" Has FF Support!, Effects:\n");
                const ForceFeedback::SupportedEffectList &list = m_ff[i]->getSupportedEffects();
                ForceFeedback::SupportedEffectList::const_iterator i = list.begin(),
                    e = list.end();
                if(m_debugEnabled)
                {
                    for( ; i != e; ++i)
                    {
                        printf("   Force=%s, Type=%s\n",SForce[i->first].c_str(),SType[i->second].c_str());
                    }
                }
            }
            else if(m_debugEnabled)


                printf("No FF Support\n");
        }
    }
    catch(OIS::Exception &ex)
    {
        if(m_debugEnabled)
            printf("Exception raised on joystick creation: %s\n", ex.eText);
    }

    //
    // set OIS display size
    //
    dimension2di dims = m_device->getVideoDriver()->getScreenSize();
    setDisplaySize(dims.Width,dims.Height);

    return result;
}
Reality is almost always wrong. - House

   
gaborlabor - Moderátor | 4449 hsz       Online status #96100   2008.09.20 03:19 GMT+1 óra  
OIS-t szeretném használni a progimban input kezelésére. A gond az, hogy tutorialokból van vagy 2 db, az is mind ogre-s.
Ezzel kezdtem volna, de már az elején elakadtam.
Az inicializálásban van egy ilyen sor:
Kód:
m_win->getCustomAttribute("WINDOW", &windowHnd);

Magyarázatként pedig:
Line 4 populates the size_t object with the window handle. 'm_win' in this example is a pointer to an initialised Ogre::RenderWindow

Nekem nincs initialised Ogre::RenderWindow-om, nem is lesz.

Ezért az ogréhez értő embereket kérdezném, hogy mégis mit csinál az említett sor, hogyan/mivel tudom helyettesíteni akkor ha csak szimplán winapi-val hozok létre ablakot.
Elsőre azt gondoltam, hogy a létrehozott ablak hwnd-jét adja meg, de a példában a windowHnd változó size_t típusú.

Any idea?

   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #95282   2008.08.29 07:27 GMT+1 óra  
1.6.0 Shoggoth
   
Robsoft - Tag | 345 hsz       Online status #95268   2008.08.29 01:19 GMT+1 óra  
Bár most nálam nem aktuális a téma, csak felfigyeltem az oldalon a directX 10 és a geometry shader ficsörökre. Kijött az Ogre 1.6.0.
 
Blog
 
   
dvorgaz - Törzstag | 575 hsz       Online status #95204   2008.08.28 04:12 GMT+1 óra  
Köszi, akkor ez így egyszerűbb mint gondoltam.
   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #95203   2008.08.28 04:10 GMT+1 óra  
Azt automatikusan csinálja -> leírás alapján
mSceneMgr = mRoot->createSceneManager(ST_GENERIC);

Ez Octree-t használ, ha be van töltve a Plugin_OctreeSceneManager(.dll), automatikusan. Az Octree-t pedig entity/subentity szintből készíti.
   
dvorgaz - Törzstag | 575 hsz       Online status #95090   2008.08.27 06:45 GMT+1 óra  
Köszi, eredetileg a nem látható dolgok szűrésére kellett valami módszer, azt hittem a static geometry csinál valami ilyesmit, de ezek szerint ez nem jó erre. Viszont rájöttem, hogy octree/terrain scenemanagerben lehet octree-t építeni, ami pont jól jönne, viszont nem találtam leírást, hogy azt hogy is kell hesználni. Nincs valami tutor vagy sample amiben objektumokhoz octreet generál?
   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #95069   2008.08.27 00:07 GMT+1 óra  
Kicsit utánaolvastam (nekem is jól jött):
- StaticGeometry-re nem szabadít rá semmilyen térfelosztást: ha jól értettem úgy működik, hogy kérsz 1 static geometry-t a SceneManager-től, majd ehhez hozzáadsz jó sok Entity-t v 1 SceneNode-ot, amiből az összes Entity-t ki fogja szedni (még a gyerek SceneNode-okból is). Ezeket az Ogre EGY OBJEKTUMKÉNT kezeli innentől, azaz ha bármelyik benne van a view-frustum-ban akkor az összeset kirajzolja. Ez elvileg nem teljesen van így, SceneManager implementációtól függően szűrhet rajtuk még. Az egész lényege az lenne, hogy sok objektumot 1xre rajzol ki/ küld át a GPU-nak. Ez kb. azt jelenti, h a StaticGeometry-nek átadott objektumokat material alapján szétválogatja majd a vertex adatokat optimalizálja és egyesíti (ha van 100 széked ugyan azzal a materiallal 1 szobában akkor összeszedi őket és egyben átküldi az összeset, de ha mondjuk a széken 2 material van, akkor 2 draw hívással rajzoltatja ki (tehát az átadott objektumokat material alapján még _automatikusan_ szétválogatja).

Vigyázni kell vele, mert megvan az előnye, de pl. a Pro Ogre 3D Prog könyv azt is írja, h néha jelentős lehet a memória használat is, mivel ilyenkor az azonos objektumokat többször is tárolja a memóriában (alapból ugyebár a MovableObject-ek megosztják a mesh adatot, azaz csak 1x töltődik be a memóriába).

Arról, hogy animált obj kerülhet e bele nem ír semmit, de ha jól értelmeztem, akkor nem, mivel valószínűleg nem hívja meg az Entity update függvényét. Pontosan azt írja a könyv, h CSAK world transform-ot hajt végre az egész SG-n és külön már nem lehet elérni a befoglalt objektumokat.

És persze arra is vigyázni kell, hogy a lehető legritkábban építsd fel a SG-t, mert ez elvileg egy elég lassú folyamat (lehet).

-> Ha jól értelmezem/gondolom akkor a láthatóságot sem lehet állítani, pont azért, amit írtam: elv. ha kész a StaticGeometry azt onnantól 1 objektumként kezeli, azaz ha bármi változik újra kell építeni SG-t.

Ha pedig mesh-alapján akarsz WorldGeometry-t létrehozni (azaz magát a terepet/terrain) ahhoz spéci SceneManager kell -> elv a Paging Landscape Scene Manager támogatja a mesh alapján történő felosztást, de ezt még nem próbáltam (azt hiszem van már PLSM2 is).

Ezt a hozzászólást ShAdeVampirE módosította (2008.08.27 00:26 GMT+1 óra, ---)
   
dvorgaz - Törzstag | 575 hsz       Online status #94930   2008.08.24 13:20 GMT+1 óra  
Hello

Tudja valaki pontosan hogy működik a static geometry?

Nekem az jött le, hogy a static geometryként beállított objektumokra rászabadít valamiféle térfelosztást, ezáltal gyorsabb lesz a láthatóság vizsgálata, illetve, hogy ez objektum szinten működik és nem poligononként (tehát ha a pálya egy nagy mesh, akkor azt mindíg egészben kirajzolja).

Na most az érdekelne, hogy a static geometry lehet-e animált modell (mondjuk egy nagy forgó szélkerék, animált, de a pozíciója statikus, tehát lehet térfelosztánál használni), illetve a láthatóságát lehet-e állítani (pl izometrikus játék, karakter hazba bemegy, háztető eltűnik, hogy látszódjon a belseje, és mind a ház és a tető static geometry).
   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #91057   2008.07.01 13:18 GMT+1 óra  
Ha nem ír error-t/exception-t akkor nem (log-ot azért még nézd át). De sztem simán delete-tel kell törölni, persze ettől még mesh megmarad (ha jól sejtem, főleg ha másik entity használja az adatait).
   
dvorgaz - Törzstag | 575 hsz       Online status #90976   2008.07.01 10:08 GMT+1 óra  
Törölni lehet, működik is, arra voltam igazából kiváncsi, hogy Ogre beregisztrálja-e valahova magának az entitást, nehogy delete-tel valami dangling pointert hagyjon így maga után.
   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #90967   2008.07.01 09:56 GMT+1 óra  
elvileg delete-tel lehet törölni; ha mégsem írd meg és utánanézek, de úgy emléxem én is úgy töröltem
   
dvorgaz - Törzstag | 575 hsz       Online status #90816   2008.06.30 10:14 GMT+1 óra  
Köszi, intellisense-ben nem találtam meg a pointeres verziót.

ui.: akkor entitást hogy lehet törölni? szimplán delete akarmi? API doksiban nem igazán sikerült rálelni...

Ezt a hozzászólást dvorgaz módosította (2008.06.30 10:37 GMT+1 óra, ---)
   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #90814   2008.06.30 09:58 GMT+1 óra  
Ogre - API
virtual Node * removeChild (unsigned short index)
Drops the specified child from this node.
virtual Node * removeChild (Node *child)
Drops the specified child from this node.
virtual Node * removeChild (const String &name)
Drops the named child from this node.
virtual void removeAllChildren (void)
Removes all child Nodes attached to this node.


Tehát van név alapján, van pointer alapján és van index alapján törlő metódus is. A leírás szerint pedig azért nem törli őket automatikusan, mert lehetséges, hogy utána máshova akarod átcsatolni (pl. a karakter leszáll a lóról/kiszáll az autóból).
   
dvorgaz - Törzstag | 575 hsz       Online status #90808   2008.06.30 07:33 GMT+1 óra  
Ki lehet törölni egy SceneNode-ot/Entity-t simán egy pointer alapján, vagy a scenegraph-nak kell valami remove függvényét használni?
Egyrészt ahogy néztem, a rekurzív remove/destroy függvények az entity-ket csak detach-olják de nem törlik, másrészt egy node gyerek node-jának törlésére csak olyan fv-t találtam ami valami int index-szel vagy névvel működik, de nálam nincs a node-nak neve, és fingom nincs mi az indexe.
   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #90759   2008.06.29 08:36 GMT+1 óra  
Közben véletlenül abba is belefutottam, hogy a magunk által létrehozott erőforrásokat h lehet unload-olni/reload-onli -> ManualResourceManager osztály leírásából:
Ogre - API - ManualResourceManager
Resources are usually loaded from files; however in some cases you want to be able to set the data up manually instead. This provides some problems, such as how to reload a Resource if it becomes unloaded for some reason, either because of memory constraints, or because a device fails and some or all of the data is lost.

This interface should be implemented by all classes which wish to provide manual data to a resource. They provide a pointer to themselves when defining the resource (via the appropriate ResourceManager), and will be called when the Resource tries to load. They should implement the loadResource method such that the Resource is in the end set up exactly as if it had loaded from a file, although the implementations will likely differ between subclasses of Resource, which is why no generic algorithm can be stated here.
   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #90724   2008.06.28 05:19 GMT+1 óra  
Azt hiszem megtaláltam amit kerestem, ebben az ogre-fórumos-topicban pont erről van szó (habár ennyire nem komplexen, csak a változók beállításáról): http://www.ogre3d.org/phpBB2/viewtopic.php?t=41479&sid=ce193664e1d3d7c4af509e6f4e2718c6
   
ShAdeVampirE - Törzstag | 1313 hsz       Online status #90723   2008.06.28 05:03 GMT+1 óra  
Nem játékot készítek, ez most céges project, bár nem áll nagyon messze, 3D-s progi.
Fallback-et már használtam, csak most lassan kéne bővíteni az engine/prog képességeit azzal, h manuálisan lehessen kapcsolgatni h pl. fog az shader-esen v FFP (Fixed Function Pipeline)-on legyen, fény az per-pixel/per-vertex/FFP legyen, bump-> shaderesen v dot3bump stb. A kérdés igazából erre irányult, h h lehet ogre-val legegyszerűbben csoportokat kialakítani és ott az összes material-nál ki/be kapcsolni valamit (pl. fog/köd-öt).
   
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] > 8 < [9] [10] [15]