3ds Max : Tank Animasyon
Arkadaslar ben bir tank animasyonu yapmak istiyorum,acaba nasil yapabilirim ?
reactor`umu onerirsiniz yoksa bununla ilgili bir plugin var mi ?
- Offline
- Erkek
tanko v2.25i tavsiye edebilirim.
- Offline
- Erkek
- Offline
- Erkek
Baya güzel olmuş, ama yeni max`de reaktor yok, biz böyle şeyler yapamayız yani :)
- Offline
- Erkek
yeni maxte physx var ve burada kullandığım kısıtlayıcıların hepsi mevcut physx içinde sorun yok yapılır.
- Offline
- Erkek
3dsmax ile gelen craft tool da basitçe rigleyip yapabilirsin aslında
- Offline
- Erkek
http://www.youtube.com/watch?v=vcVMpFQiHXE&feature=relmfu
- Offline
- Erkek
saolun arkadaşlar dediklerinizi bi deneyeceğim,
- Offline
- Erkek
http://www.youtube.com/watch?v=x5isvIAu6T8
http://www.youtube.com/watch?v=7QwB4ZFejQQ
burada güzel bir anlatı var.
- Offline
- Erkek
işte sana tank
http://www.4dizayn.com.tr/anim/cop/tank.avi
http://www.4dizayn.com.tr/anim/cop/tankkirik.avi
aşşağıdaki reactorde zincir yapan kod.
çalışması için left penceresine yapmak istediğin paletin şeklini spline ile çiz
çizdiğin spline'yı seç ve kodu çalıştır.
kodu çalıştırmak için notdefterine yapıştır kaydet
uzantısını .ms olarak değiştir. ve dosyayı maxin üzerine sürükle bırak. çalışır
koddaki bazı rakamların altını çizdim bu rakamları değiştirerek
zinciri oluşturan kutuların sayısını ve boyutlarını ayarlayabilirsin
(
baklaSayisi = 50
for i=0 to baklaSayisi do
(
b=Box length:5 width:30 height:((curveLength $ 1)/baklaSayisi) name:("Bakla"+i as string)
b.pos.controller = Path_Constraint ()
b.pos.controller.path = $
b.pos.controller.percent = (i as float*100/baklaSayisi)
)
for l=1 to baklaSayisi-1 do
(
(execute ("$Bakla"+l as string)).lookat = (execute ("$Bakla"+(l+1) as string))
(execute ("$Bakla"+(l+1) as string)).transform.controller.flip = true
)
$Bakla0.lookat=$Bakla1
$Bakla1.transform.controller.flip = true
for obj in $Bakla* do
(
convertToMesh obj
newMesh = meshop.detachFaces obj #{1..obj.numfaces} delete:true asMesh:true
update obj
emesh = Editable_mesh()
emesh.mesh = newMesh
update emesh
emesh.transform = obj .transform
emesh.name=("obj"+obj.name)
)
delete $Bakla*
delete $objBakla0
for i=1 to $objBakla*.count-1 do
(
hng=Hinge name:("rctBakla"+i as string)
obj=(execute("$objBakla"+i as string))
hng.childBody = obj
hng.hasParentBody = on
hng.ParentBody = (execute ("$objBakla"+(i+1) as string))
hng.parentTransform = (matrix3 obj.transform.row3 obj.transform.row2 obj.transform.row1 hng.parentTransform.row4)
hng.alignToParentSpace()
)
hng=Hinge name:("rctBakla"+i as string)
obj=(execute ("$objBakla"+($objBakla*.count) as string))
hng.childBody = obj
hng.hasParentBody = on
hng.ParentBody = $objBakla1
hng.parentTransform = (matrix3 obj.transform.row3 obj.transform.row2 obj.transform.row1 hng.parentTransform.row4)
hng.alignToParentSpace()
)
for i in $objBakla* do (for s in $objBakla* do reactor.disableCollisions s i)
scripti kullanarak zinciri oluşturduktan sonra
oluşan hinhle'ları CSolver ile kutularıda RBCollection ile simulasyona dahil et
kutulara ağırlık vermeyi ve CSolver'e RBCollection'ı göstermeyi unutma.
oluşan zincirin içine silindirler çiz onları carwhell´le gövdeye bağla
zincirin paletten çıkmaması için paletten daha büyük kutular çiz ve zincirin iki yanına yasla.
kutuları gövdeye fracture kullanarak bağla velocity değerini çok yüksek ver yoksa bağladığın kutular kopar.
son olarak bu kutuların collosionlarını sadece zincirle çarpışacak şekilde ayarla. yani kutular zincir dışında herşeyin içinden geçecek. ve kutuların sürtünme katsayılarını 0 (sıfır) yap.
http://www.4dizayn.com.tr/anim/cop/tank.zip
işte buda yapılmış örnek
bu yapılmış örnekteki tankı sürmek için yazdığım koduda aşşağıda veriyorum
dikkat et bu kod sadece verdiğim max dosyası açıkken çalışır.
rollout palet "PALET" width:162 height:85
(
spinner spn1 "" pos:[15,21] width:65 height:16 range:[-100,100,0]
spinner spn2 "" pos:[93,20] width:65 height:16 range:[-100,100,0]
spinner spn3 "" pos:[15,50] width:65 height:16 range:[0,1000,300]
spinner spn4 "" pos:[93,50] width:65 height:16 range:[0,1000,300]
on spn1 changed val do
(
$CarWheel01.velocity = spn1.value
$CarWheel02.velocity = spn1.value
$CarWheel03.velocity = spn1.value
$CarWheel04.velocity = spn1.value
$CarWheel05.velocity = spn1.value
)
on spn2 changed val do
(
$CarWheel06.velocity = spn2.value
$CarWheel07.velocity = spn2.value
$CarWheel08.velocity = spn2.value
$CarWheel09.velocity = spn2.value
$CarWheel10.velocity = spn2.value
)
on spn3 changed val do
(
$CarWheel01.gain = spn3.value
$CarWheel02.gain = spn3.value
$CarWheel03.gain = spn3.value
$CarWheel04.gain = spn3.value
$CarWheel05.gain = spn3.value
)
on spn4 changed val do
(
$CarWheel06.gain = spn4.value
$CarWheel07.gain = spn4.value
$CarWheel08.gain = spn4.value
$CarWheel09.gain = spn4.value
$CarWheel10.gain = spn4.value
)
)
createdialog palet
yukarıdaki scripti çalıştırınca
çıkan arayüzde sağ taraftaki değerler sağ paleti soldakiler sol paleti kontrolereder
üstteki değerler hızı
alttaki değerler çekişi ayarlar
hız=0
çekiş>1000 yaparsan fren olur.
aslında uğraşılsa buradaki gibi tank yapan bir script yazılabilirdi ama reactor kaldırıldı
http://www.tr3d.com/index.php?id=galeri&r=2857
artık physx'le bir tank yapıp ona script yazarız.
attığın özel mesaja cevabı buradan vereyim herkes faydalansın dedim
kolay gelsin.
- Offline
- Erkek