"3DCS avagy sebészeti tervezés"
Részletek a hírekben!
 
   
 
 
Naprakész hírek...                                         240 fórumozó...                                         Számos magyar oktatóanyag...                                         Videóanyagok magyarul is...                                         Letölthető fájlok...                                         Textúrák...                                         Összegyűjtött linkek...
 
  Rólunk
Hírek
Fórum
Kihívás
Kapcsolatok
Galéria
Aktuális, 2015
2014, 2013
2012, 2011
2010, 2009
Leírások
Kezdő leckék
Haladó leckék
Egyéb leírás
Billentyűk
Videóanyagok
Kezdő videók
Haladó videók
Egyéb videók
Tippek, trükkök
Letöltés
BLEND fájlok
Textúrák
Linkajánló
Archivum
Projektek
BlendRace SokoTruck
Flipper MB game
 
 

Blender leírások és oktató anyagok

 

Autós szimuláció Blenderben



A blender GE tartalmaz egy beépített autó szimulátort. Az őszintét megmondva nem vagyok elszálva tőle, de azért nem annyira katasztrófa.
A használata viszont nem egyszerű, és igényel némi jártasságot a programozásban. Hogy azok is tudjanak szimulációt készíteni, akik nem kívánnak elmélyedni a programozásban, ősszeállítottam egy kis kódot, amit felhasználva mindenki saját szája íze szerint készíthet auós játékokat programozás nélkül.

A kaszni


A Blenderben el kell készíts egy nem túl sok poly-ból álló vázat, és 4 kereket ezeket fel kell textúrázd. Tegyél alá valamilyen pályát. Legrosszabb esetben egy plane-t, amin textúrában van az út megrajzolva.

A kerekeket pontosan így kell elnevezned: jobbelso, balelso, jobbhatso, balhatso. (Igen, csupa kis betűvel!)  Ha nincsenek ilyen nevű objektumok, akkor a kocsi nem igazán fog menni.
(Előfordulhat, hogy más nevet akarsz adni a kerekeknek (pl. mert több autód is van egy kétjátékosos versenyhez), ekkor a property-k közé sztring típussal fel kell venni a kerék átnevezéseket. Például, ha a jobb hátsó kereket te auto2_jh -nak akarod hívni, akkor egy jobbhatso sztring property-be az auto2_jh szöveget kell felvenni.)
kép1

Ezek után már csak hozzá kell adni a python scriptet. Menj a text editor-ba, kattints az ADD NEW-ra, nevezd el kocsi -nak és másold be ezt a kódot:
# MsV 2010 v0.2
 
import PhysicsConstraints
import GameLogic
 
cont = GameLogic.getCurrentController()
chassis  = cont.owner
 
chassis.applyImpulse([0.0, 0.0, 0.0], [0.0, 0.0, 0.0])
 
try: init = chassis["init"]
except: init = False
 
if not init:
    chassis["init"] = True
    chassis["cid"] = PhysicsConstraints.createConstraint(chassis.getPhysicsId(),0,11).getConstraintId()
    vehicle = PhysicsConstraints.getVehicleConstraint(chassis["cid"])
    scene = GameLogic.getCurrentScene()
    
    try: felfuggesztes = chassis["felfuggesztes"]
    except: felfuggesztes = 1.2
    try: oldaltav = chassis["oldaltav"]
    except: oldaltav = 1.1
    try: elsotav = chassis["elsotav"]
    except: elsotav = 2.0
    try: hatsotav = chassis["hatsotav"]
    except: hatsotav = 1.7
    try: je = chassis["jobbelso"]
    except: je = "jobbelso"
    try: be = chassis["balelso"]
    except: be = "balelso"
    try: jh = chassis["jobbhatso"]
    except: jh = "jobbhatso"
    try: bh = chassis["balhatso"]
    except: bh = "balhatso"
    
    try:
        vehicle.addWheel(scene.objects[ "OB"+je ], [oldaltav, elsotav, 0.0], [0, 0, -1], [-1, 0, 0], felfuggesztes, 0.5, 1)
        vehicle.addWheel(scene.objects[ "OB"+be ], [-oldaltav, elsotav, 0.0], [0, 0, -1], [-1, 0, 0], felfuggesztes, 0.5, 1)
        vehicle.addWheel(scene.objects[ "OB"+jh ], [oldaltav, -hatsotav, 0.0], [0, 0, -1], [-1, 0, 0], felfuggesztes, 0.5, 0)
        vehicle.addWheel(scene.objects[ "OB"+bh ], [-oldaltav, -hatsotav, 0.0], [0, 0, -1], [-1, 0, 0], felfuggesztes, 0.5, 0)
    except: chassis["init"] = False
    
else:
    vehicle = PhysicsConstraints.getVehicleConstraint(chassis["cid"])
    
    try: iranytartas = chassis["iranytartas"]
    except: iranytartas = 0.95
    try: fordulekonysag = chassis["fordulekonysag"]
    except: fordulekonysag = 0.99
    
    chassis["fordulas"] *= iranytartas
    if chassis["fordulas"] < -1: chassis["fordulas"] = -fordulekonysag
    if chassis["fordulas"] > 1: chassis["fordulas"] = fordulekonysag
    
    for x in range(2): vehicle.setSteeringValue(chassis["fordulas"],x)
    for x in range(4): vehicle.applyEngineForce(chassis["nyomatek"]*.4,x)
    
    try: hatekonysag = chassis["hatekonysag"]
    except: hatekonysag = 0.1
    try: merevseg = chassis["merevseg"]
    except: merevseg = 10.0
    try: csillapitas = achassis["csillapitas"]
    except: csillapitas = 1.3
    try: nyomas = chassis["nyomas"]
    except: nyomas = 2.4
    try: surlodas = chassis["surlodas"]
    except: surlodas = 100.0
    
    for x in range(4):
        vehicle.setRollInfluence(hatekonysag,x)
        vehicle.setSuspensionStiffness(merevseg,x)
        vehicle.setSuspensionDamping(csillapitas,x)
        vehicle.setSuspensionCompression(nyomas,x)
        vehicle.setTyreFriction(surlodas,x)

Állítsuk be, hogy a kasznihoz mindig fusson ez a kód, és állítsuk be a kaszni GE paramétereit a kép alapján:

kép2

A kasznihoz fel kell venni a képen látható 2 proprty-t: nyomatek, fordulas. A nyomaték a motor nyomatéka, negadív szám esetén lassul, ill. hátrafelé megy. A fordulás azt jelenti, hogy merre fordul (-1 és + között).

Ha hiszed, ha nem a kocsi már működik. Ha megnyomod a -t a kocsi szépen araszol. (Ha fordítva tetted fel a kasznit, akkor hátrafelé :) )
Persze azért csak jobb lenne, ha irányítani is lehetne... de nemsokára az is meg lesz.

Ha a kerekek nincsenek jó helyen, akkor 3 property-vel igazíthatod be: oldaltav, elsotav, hatsotav, felfuggesztes. Ezek rendre a kerekek távolsága a középvonaltól, az első kerekek mennyivel legyenek előrébb a középpontnál, a hásó kerekek mennyivel legyenek hátrébb a középpontnál, és a kerekek milyen magasan legyenek.

Mire minden jó méretű lesz, az eltarthat egy darabig, de nem vészes. Viszont fogadj el egy jó tanácsot. Ha összeraktad eddig, és nem klappol, mert más méretekkel dolgoztál, akkor ne a paraméreteket állogasd először, mert mindent (magasság, nyomaték, rádiusz, stb.) újra be kell hangolnod és az nagy meló, inkább lépj edit módba, és a kocsit méretezd át, hogy a kerekek nagyjából jó helyen legyenek, majd a kerekek méretét is növeld arányosra, és ha itt még mindig korrigálni kell, akkor állíts (mostmár sokkal kisebbet) a paramétereken. Így nem kell mindent átállítanod.


Kormányzás

A kormányozáshoz a fordulas property-t kell a billentyűleütéseknek megfelelően változtatni a kasznin.

kép3

Mostmár forgolódhatunk is a kocsival...

Gáz, fék


A motor nyomatékát tudod állítani a billentyűlenyomásoknak megfelelően. Ehhez a nyomatek property-t kell változtatni a kasznin, méghozzá úgy, hogy amíg nyomjuk a gombot, addig magas legyen a nyomaték, amikor elengedjük, akkor viszont essen le nullára. (A kocsi nem fog megállni, mert viszi a lendület, csak a gázról vettük le a lábunkat.)

kép4

Nincs más hátra, egy fifikás pályát kell építenünk, hogy élvezkedhessünk kicsit :)

Extrák


Néhány extra paramétert is felvehetsz:

iranytartas (0.95) - minél kisebb, annál gyorsabban áll egyenesbe a kocsi
fordulekonysag (0.99) - mennyire lehet eltekerni a kormányt (radiánban)
hatekonysag (0.1) - a motor milyen arányban adja át a nyomatékot a kerekeknek
merevseg (10.0) - felfüggesztés merevsége
csillapitas (1.3) - lengéscsillapító eggyütt hatója
nyomas (2.4) - keréknyomás
surlodas (100.0) - a kerekek súrlódása

Ezeket nem kell felvenni, de ha felveszed, akkor a program figyelembe veszi. Így akár dinamikusan is tudod változtatni a súrlódását, ha a kocsi le-touch-csol egy jeges elemet...

Feltettem egy minta fájlt tutor__car.blend néven a letölthető fájlok közé. (Vigyázz, nagyon gagyi a modell!)