Právě je ned úno 23, 2025 10:08 pm

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 17 ]  Přejít na stránku 1, 2  Další
Autor Zpráva
PříspěvekNapsal: stř kvě 17, 2006 12:19 pm 
Offline
....
....
Uživatelský avatar

Registrován: ned dub 09, 2006 4:29 pm
Příspěvky: 233
Bydliště: Olomouc/Brno
Chtěl jsem udělat snímač pohybu objektu. Sehnal jsem script, který jsem si následně takto upravil podle potřeby:

import GameLogic
Owner = GameLogic.getCurrentController().getOwner()
Vel = Owner.getLinearVelocity()

if (Vel[0] < 0.5):
Owner.vpred = 0

else:
Owner.vpred = 1


if (Vel[0] > -0.5):
Owner.couvani = 0

else:
Owner.couvani = 1


if (Vel[1] < 0.5):
Owner.lsmyk = 0

else:
Owner.lsmyk = 1


if (Vel[1] > -0.5):
Owner.psmyk = 0

else:
Owner.psmyk = 1



Chtěl jsem ho použt k odstranění problému, že se mi auto točí na místě :shock: , a také ke zpuštění zvuku pálení pneumatik... Ale tento script používá globální souřadnice a když s autem odbočím, tak se jeho ůčinak podstatně změní... :evil: Ozve se pálení gumy při jízdě vpřed a vzad a nezatáč ani při jízdě. :D Nevíte někdo, jak by se dal script předělat na lokální souřadnice? Fakt dík za pomoc...


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: stř kvě 17, 2006 1:44 pm 
Offline
....
....

Registrován: pon črc 12, 2004 1:15 pm
Příspěvky: 382
Bydliště: Bratislava
Získaj maticu orientácie objektu a potom ňou vynásob vektor rýchlosti:
Kód:
# matica orientacie
mat = Owner.getOrientation()
# vektor lokalnej rychlosti
lVel = []
# pre vsetky riadky
for r in range(3):
  # vloz novy prvok
  lVel.append(0)
  # pre vsetky stlpce
  for c in range(3):
    # prejdi vsetky suciny
    lVel[r] += mat[r][c] * Vel[c]


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: stř kvě 17, 2006 2:14 pm 
Offline
....
....
Uživatelský avatar

Registrován: ned dub 09, 2006 4:29 pm
Příspěvky: 233
Bydliště: Olomouc/Brno
Stejně to asi nechápu... Já v pythonu skoro neumim... To byl zázrak, že sem udělal to, co sem napsal... Ňák to zkusím... Dík za pomoc


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: stř kvě 17, 2006 2:27 pm 
Offline
....
....

Registrován: pon črc 12, 2004 1:15 pm
Příspěvky: 382
Bydliště: Bratislava
Tento kus kódu vlož do tvojho skriptu za "Vel = Owner.getLinearVelocity()" a potom vo zvyšku skriptu zmeň Vel na lVel.


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: pon kvě 22, 2006 3:13 pm 
Offline
....
....
Uživatelský avatar

Registrován: ned dub 09, 2006 4:29 pm
Příspěvky: 233
Bydliště: Olomouc/Brno
Stejně mě to nejde... Napsal sem to cos mi napsal za to Vel = Owner.getLinearVelocity() a to Vel sem změnil na lVel, script funguje bezproblémově, ale je to stejně jako před tim... Asi sem tě špatně pochopil, nebo fakt nevim... Jestli by se ti chtělo, tak mi nepis, co mam pridat, ale rovnou uprav ten muj script... Su lemra, tak to asi nepude.


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: úte kvě 23, 2006 5:23 pm 
Offline
....
....

Registrován: pon črc 12, 2004 1:15 pm
Příspěvky: 382
Bydliště: Bratislava
Tento pokus je založený na mojom malom module mat, ktorý implementuje základné operácie s vektormi a maticami (je potrebná inverzia matice).


Přílohy:
auto.zip [30.15 KiB]
110 krát
Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: stř kvě 31, 2006 8:13 am 
Offline
....
....
Uživatelský avatar

Registrován: ned dub 09, 2006 4:29 pm
Příspěvky: 233
Bydliště: Olomouc/Brno
Jo super, už to de... Diky, to ti muselo dat celkem cas. Děsně mi to pomohlo... Ale je tu takovej hořkej problém... Nevíš, jak to rozchodit v blenderplayeru, nebo v EXI??? Asi to nepude, co... No víš. zrovna se mi nechce dávat všem, kdo to budou pařit (jestli se takovej vuj najde :D) .blend, a ještě blendera... Ne že bych tam měl nějaké vývojářské tajosti, ale přestavte si nějakého amatéra, kterej nezná komp, jakl se mu poblbne autostart, a zpusti se mu blender... Navíc je tam hnusná lišta. :(


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: stř kvě 31, 2006 9:45 am 
Offline
....
....

Registrován: pon črc 12, 2004 1:15 pm
Příspěvky: 382
Bydliště: Bratislava
BlenderPlayer má problémy s prístupom k vnútorným textom v Blenderovskom súbore, takže nevidí ten modul mat. Riešenia sú možné dve:
1. zobrať potrebné funkcie z modulu mat a nakopírovať ich do tých skriptov, kde sú použité a vyhodiť príkaz import mat zo začiatku týchto skriptov.
2. pribaliť k exe súbor mat.pyc, ktorý vznikne kompiláciou modulu mat v Pythone

Prvé riešenie je vhodné, keď sú funkcie použité v malom počte skriptov - rozkopírovanie funkcií do veľa skriptov môže spôsobiť chyby.
Druhý spôsob má nevýhodu v ďalšom pribalenom súbore k vygenerovanému exe z Blenderu.


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: stř kvě 31, 2006 7:30 pm 
Offline
....
....
Uživatelský avatar

Registrován: ned dub 09, 2006 4:29 pm
Příspěvky: 233
Bydliště: Olomouc/Brno
No já to potřebuju jenom do jednoho scriptu, tak to asi udělám tím 1. způsobem... Díky za pomoc...


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: stř kvě 31, 2006 10:01 pm 
Offline
.....
.....

Registrován: sob srp 20, 2005 5:03 pm
Příspěvky: 539
Ash: ?, nepochybne lepsie programujes ako ja, ale to co si postol som celkom nepobral. Vobec nie je vidiet co ten skript robi, a tiez neviem preco robit veci zlozito ked idu jednoduchsie. Aby som nekecal, nieco som postol sem: http://blender3d.cz/forum/viewtopic.php?p=32549#32549


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: stř kvě 31, 2006 11:09 pm 
Offline
...........
...........
Uživatelský avatar

Registrován: sob zář 18, 2004 4:13 pm
Příspěvky: 1898
Bydliště: Slovensko, Bratislava
nuz..podla mna to Ash spravil jednoducho... 15 riadkou, to je pohoda. A pritom je vypocet iba jeden riadok, fakt si nedokazem predstavit nic jednoduksieho.

Ash vdaka za tie vypocti s maticami a vektormi. Uz mi to dlho bludi hlavou...


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: čtv čer 01, 2006 6:50 am 
Offline
.....
.....

Registrován: sob srp 20, 2005 5:03 pm
Příspěvky: 539
to zgerbiak: vopred sa ospravedlnujem za svoju odpoved, po celonocnej akcii mi to trosku uchadza, ale: pozeral si sa na blend ktory som postol??? mimo bezne prikazy, ktore musis pouzit aj u ashovho navrhu, sa tam nachadza tiez maximalne 15 riadkov naviac, pricom na vypocet je pouzitych asi pat riadkov, z ktorych vzdy bezia maximalne 2naraz, a to nehovorim o tom, ze je tam vyriesene uz skoro cele ovladanie auta. Rad by som priponeul, ze pre funkcnost pouzil JirkaRCK ashov skript mat, ktory uziva omnoho viac riadkov nez si ty spomenul, takze podla mojho nazoru to jednoduchsie ide spravit. Tym samozrejme nechcem potopit prinos ashovho skriptu o maticiach pre nas laikov.


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: čtv čer 01, 2006 9:17 am 
Offline
....
....

Registrován: pon črc 12, 2004 1:15 pm
Příspěvky: 382
Bydliště: Bratislava
kracho,

každý ten príklad je o inom - ty máš v skripte riešené riadenie auta, ja som riešil problém Jirku RCK o detekcii stavu auta - zrýchlenie, spomalenie, šmyk, nie riadenie auta. Riadenie auta som kedysi pred dvomi rokmi riešil v príklade na tejto stránke s použitím anizotropického trenia.


Nahoru
 Profil  
 
PříspěvekNapsal: čtv čer 01, 2006 12:27 pm 
Offline
.....
.....

Registrován: sob srp 20, 2005 5:03 pm
Příspěvky: 539
Jirka RCK píše:
Chtěl jsem ho použt k odstranění problému, že se mi auto točí na místě :shock: , a také ke zpuštění zvuku pálení pneumatik...

Ja sa skutocne nechcem hadat, ja som tiez chcel len vyriesit Jirkov problem, takze to co som napisal nie je len o ovladani auta. Problem1: aby sa auto netocilo na mieste (jasne mas to v tvojich examploch, coz som nevedel), tak to tam vyriesene je. za 2:palenie pneumatik, staci akurat pridat ze pri urcitej rychlosti a pri toceni, sa spusti zvuk palenia gum.
PS: tym vsetkym co som tu o tom pisal som chcel len povedat, ze si Jirka na riesenie svojho konkretneho problemu vybral tu zlozitejsiu variantu, a ze sa to da i inak. tot vsetko


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: stř čer 07, 2006 9:07 am 
Offline
....
....
Uživatelský avatar

Registrován: ned dub 09, 2006 4:29 pm
Příspěvky: 233
Bydliště: Olomouc/Brno
Ash píše:
1. zobrať potrebné funkcie z modulu mat a nakopírovať ich do tých skriptov, kde sú použité a vyhodiť príkaz import mat zo začiatku týchto skriptov.
Zdarec sory ze se jeste blbe ptam, ale jak si to myslel? Já sem asi uplná houba, sem ten script mat nakopíroval do scriptu auto a vymazal sem import mat, ale nic, vůbec to nejede... :( mohl bys mi prosímtě ještě poradit??? :)


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 17 ]  Přejít na stránku 1, 2  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz