blender3d.cz http://blender3d.cz/forum/ |
|
Nacitani kamey po prichodu z jine sceny http://blender3d.cz/forum/viewtopic.php?f=11&t=8360 |
Stránka 1 z 1 |
Autor: | Ïvet [ čtv říj 13, 2011 12:10 pm ] |
Předmět příspěvku: | Nacitani kamey po prichodu z jine sceny |
Zdravim, tak jsem narazila na dalsi problem. Sice jsem to vyresila ale zda se mi to jako dost krkolomne reseni. Mam vymodelovanou chodbu a z ni vedou dvere do jinych mistnosti, ktere jsou vymodelovane v jinych scenach. Kamery mam umistene prede dvermi, abych je pri vraceni se zpet na chodbu mohla nacist tak, jako bych z tech dveri vysla. Ale kdyz jsem presla z mistnosti zpet na chodbu nacetla se aktivni kamera (tj. ta prvni se kterou jsem se zacala pohybovat na zacatku chodby) chtela jsem nacist tu kameru prede dvermi. Tak jsem to resila tak, ze jsem kazdym dverim nastavila jinou hodnotu propojila sceny scenou, ktera bezi na pozadi, aby si pamatovala cislo mistnosti do ktere jsem vesla a nastavila na aktivni kamere, ze kdyz hodnota bude treba 1, tak se prepne na konkretni kameru. Ale zda se mi to jako dost zaludne reseni. Navic kdyz se prepina kamera na tu prede dvermi, tak tam problikne uplne ta prvni, coz se mi taky nelibi. Nenapada vas nekoho jak by se to dalo nejak elegantne resit? Poprípade nejaky tutorial? Docela jsem googlila ale nic moc jsem nenasla. |
Autor: | zgerbiak [ čtv říj 13, 2011 7:05 pm ] |
Předmět příspěvku: | Re: Nacitani kamey po prichodu z jine sceny |
Bez python scriptu to nepôjde. Spravil som nástrel systému. Ide o toto: Každé dvere z ktorých môžeš prísť majú pri sebe empty objekt, podľa ktorého sa nastaví kamera pre prechode do tejto scény(pozícia,orientácia). Tieto Empty majú premenné door, slúži na pomenovanie konkrétnych dverí. Dvere majú 2 premenné. Scene - to je scéna do ktorej sa dostaneš keď cez ne prejdeš Door - to je názov v premennej konkrétneho empty v tej scéne(viď. hore). Podľa toho sa vyberá v ďalšej scéne že cez ktoré dvere si vyšla. Dôležité scripty sú: load - po načítaní scény nastavuje pozíciu a rotáciu kamery. vstup - vykonáva sa pre prechod dvermi mouse a move mám len pre pohyb kamery. Blend ovládanie: w,s,a,d,myš klik pre vstup do dverí. |
Autor: | Ïvet [ sob říj 15, 2011 9:20 pm ] |
Předmět příspěvku: | Re: Nacitani kamey po prichodu z jine sceny |
Nez se zacnu ptat, chtela jsem vas tady pochvalit za rady ktere rozdavate. Jste opravdu hodni ze tady lidem pomahate. No a ted k tomu problemu. nevim proc mi nejede zadny skript, ktery nekde najdu a zkusim zapsat. Ten skript na pohyb kamery jsem predelala na: import bge def main(): cont = bge.logic.getCurrentController() own = cont.owner print (own.position.x) up = b.sensors["up"] down = b.sensors["down"] left = b.sensors["left"] right = b.sensors["right"] move = b.actuators["move"] loc = [0,0,0] rot = [0,0,0] if(up.positive): loc[2] = -0.05 if(down.positive): loc[2] = 0.05 if(left.positive): rot[0] = -0.05 if(right.positive): rot[0] = 0.05 move.useLocalDLoc = True move.UseLocalDRot = False move.dRot = rot move.dLoc = loc cont.activate(move) main() ale vubec to nereaguje. Nastavila jsem i v Logic Editoru ty sensory a propojila s tim skriptem a jednim Actuatorem pro pohyb. Videla jsem par tutorialu a maji to dost podobne. Nekde jsem cetla ze v blenderu 2.5x jsou jine moduly a tak to mozna nejde kvuli tomu. Chybu mi to hlasi uz u 5. radku u cont. Ale nikde jsem nenasla jak bych to teda mela opravit. Nebyla by nejaka rada? Predem moc dekuji. |
Autor: | zgerbiak [ ned říj 16, 2011 10:39 am ] |
Předmět příspěvku: | Re: Nacitani kamey po prichodu z jine sceny |
Nabudúce treba povedať pre akú verziu blenderu to chceš. Defaultne posielam riešenia pre 2.49b. Tento konkrétny script nejde, pretože nemá žiadne odsadenie riadkov. Iné jazyky majú pre členenie kódu špeciálne znamienka ako {}. Python to rozlišuje len : pre začiatok + odsadenie (tab) kódu ktorý patrí do danej časti. Mala by si si naštudovať základy pythonu. Ďalej máš chyby na riadku 11-16. Premenná b neexistuje. To malo byť cont. up = cont.sensors["up"] Tiež nemáš odsadený kód pod if. Na riadku 35 máš preklep s veľkým U. má tam byť malé(move.useLocalDRot = False). Po úprave by to malo byť správne takto: Kód: import bge
def main(): cont = bge.logic.getCurrentController() own = cont.owner print (own.position.x) up = cont.sensors["up"] down = cont.sensors["down"] left = cont.sensors["left"] right = cont.sensors["right"] move = cont.actuators["move"] loc = [0,0,0] rot = [0,0,0] if(up.positive): loc[2] = -0.05 if(down.positive): loc[2] = 0.05 if(left.positive): rot[0] = -0.05 if(right.positive): rot[0] = 0.05 move.useLocalDLoc = True move.useLocalDRot = False move.dRot = rot move.dLoc = loc cont.activate(move) main() |
Autor: | Ïvet [ ned říj 16, 2011 11:46 am ] |
Předmět příspěvku: | Re: Nacitani kamey po prichodu z jine sceny |
Ja vim ze se musim podivat na zaklady pythonu, ale psali python 3.x je hodne odlisny od 2.x, tak jsem hledala ruzne stranky a ty co jsem nasla byly predevsim pro 2.x Neznas nejake slusne pro verzi 3.x? Mam blender 2.59 a python 3.2. a rada bych se naucila delat skripty pro blender. Dekuji |
Autor: | zgerbiak [ ned říj 16, 2011 11:59 am ] |
Předmět příspěvku: | Re: Nacitani kamey po prichodu z jine sceny |
Mne pomohla kedysi táto stránka: http://www.py.cz/FrontPage Je pravda že v pythone už takmer nerobím, maximálne v blenderu, ale pokiaľ používa blender 2.5x python 3.x, tak som si toho okrem print "hello" a print("hello") vôbec nevšimol. Edit: Pri uční možno pomôže môj starý tutoriál: viewtopic.php?f=39&t=7351 |
Autor: | Ïvet [ pon říj 17, 2011 11:04 pm ] |
Předmět příspěvku: | Re: Nacitani kamey po prichodu z jine sceny |
Tak uz jsem ty skripty snad i pochopila...jen nevim co presne dela ve skriptu VSTUP tenhle kus kodu scene.scene = ob["scene"]. A pak mam problem s tim ze se mi nepozicuji ty kamery. Cili ve skriptu LOAD. V tomhle skriptu mi neni jasna podminka if(o.name[0:9] == "OBcam_poz"): a myslim ze tady je i zakopanej pes. Po tehle podmince se nestane nic. Nechala jsem si tam i vypsat text a ani tuk. Budu rada za nejakou dalsi radu. Dekuji. |
Autor: | zgerbiak [ úte říj 18, 2011 10:03 am ] |
Předmět příspěvku: | Re: Nacitani kamey po prichodu z jine sceny |
scene.scene = ob["scene"] prvá scene - je to actuator scene ktorý sa definoval na 8-mom riadku(scene = cont.actuators["scene"]) druhá .scene - je premenná(pole) v tom actuatoru(SCE:), scriptom sa zadáva hodnota. ob["scene"] - ob je objekt na ktorý ukazuje ray senzor(čiže dvere), ktoré majú premennú scene(meno sceny do ktorej sa cez dvere dostaneme) if(o.name[0:9] == "OBcam_poz"): - ak sa začiatok mena zhoduje s "OBcam_poz". Tu je možno problém že ak to spúšťaš v blenderu 2.5, tak tam sa tuším objekty volajú už bez OB, takže stacňči prepísať na: if(o.name[0:7] == "cam_poz"): Teraz pozerám, že keď som si otvoril ten blend z 2.49 v 2.5, tak blender prepíše sám scripty. Len škoda že zle. Pred tým čo si posielala kód že ti nejde, tak to bolo tým že to blender 2.5 blbo prepísal. (up = b.sensors["up"] a podobne blbosti). Radšej som to prepísal pre blender 2.5. Tu je blend: http://www.z-zone.ic.cz/tmp/sceny_25.zip |
Autor: | Ïvet [ sob říj 29, 2011 4:40 pm ] |
Předmět příspěvku: | Re: Nacitani kamey po prichodu z jine sceny |
Ahoj, tak uz jsem to domodelovala. A narazila jsem na problem. Kdyz uz funguje aby se ty kamery pozicovaly podle toho empty objektu, tak jsem chtela kdyz budu mit v jedne scene 2 mistnosti, aby se kamera z te v jedne prepla na kameru v te druhe scene. Myslela jsem si ze to pujde snadno podle toho skriptu VSTUP. import bge def main(): GL = bge.logic cont = GL.getCurrentController() own = cont.owner ray = cont.sensors["ray"] lmb = cont.sensors["lmb"] scene = cont.actuators["scene"] #ak som vosiel do dvery if(ray.positive and lmb.positive): ob = ray.hitObject #nastav scenu podla dveri a vstup do nej GL.door_name = ob["door"] scene.scene = ob["scene"] cont.activate(scene) #ikona msg = cont.actuators["msg"] if(ray.positive): msg.subject = "icon_on" else: msg.subject = "icon_off" cont.activate(msg) main() Myslela jsem si, ze kdyz predelam Actuator "scene"...ze Set Scene na Set Camera, tak ze kdyz pak v property predelam nazev sceny na nazev kamery, ze se normalne preda v Actuatoru a prepne se. Ale... scene.scene = ob["scene"]... tenhle kousek kodu asi nefunguje pro predani na set camera. Nejde to timhle zpusobem vubec, nebo staci prepsat ten kousek kodu? Dekuji predem za odpoved |
Autor: | zgerbiak [ sob říj 29, 2011 7:25 pm ] |
Předmět příspěvku: | Re: Nacitani kamey po prichodu z jine sceny |
Pretože pokiaľ je actuator scene typu setCamera, tak premenná do krotej píšeš názov kamery sa volá camera, nie scene. Kód: cam = cont.actuators["Camera nazov actuatoru"] cam.camera = "meno kamery na ktorú chceš prepnúť" cont.activate(cam) Takže správne by si to mala mať: scene.camera = ob["scene"] |
Stránka 1 z 1 | Všechny časy jsou v UTC + 1 hodina [ Letní čas ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |