Rigid Body problemi

Rigid Body problemi

OmerHalit

Merhaba,

Elimde bir zemin ve üç-beş domino taşı var. Rigid Body ile birbirlerine duyarlı kılındı. Fakat zemini tam olarak taşların altına koyduğumda interpenetrating hatası veriyor. Zemin ile taşlar arasında boşluk bıraktığımda ise arada kalan boşluk, animasyon başlangıcında taşların dengesini bozup düşürüyor.(aradaki boşluk boyunca taşlar zemine doğru düşüyor,arada boşluk olmayınca çarpışma hatası veriyor)

Bu problemi engellemek için ne yapmam gerektiğini bilen var mı?

umarım derdimi anlatabilmişimdir..

Teşekkürler, kolay gelsin..

2009-08-31 16:09:14

Cvp

Erkan

zeminle domino taşlarının arasındaki boşlukla reactor/world/col.tolerance değerini aynı ver
animasyonun hesaplamasını yaptırdıktan sonrada

domino taşlarına shell modifieri at
modify/shell/select outer amount = reactor/world/col.tolerance şeklinde ayarla
modify/shell/select inner faces işaretle
modify/shell/straighten corners işaretle
sonrada domino taşlarına delete mesh modifieri at.

not: reactor/world/col.tolerance değerini olabildiğince küçük ver hatta havok3 motorunu kullanırsan bu değeri dahada düşüre bilirsin.

kolay gelsin

2009-09-02 10:36:07

Cvp

Guero

erkan abi sen ne mubarek adamsın herkese yardım ediyosun Helal olsun...bu arada bende maxscripte başladım yakında bişeyler yaparım umarım...

2009-09-02 19:56:51

Cvp

keno

ERKAN ! ERKAN ! ERKAN ! OLEY OLEY OLEY !!!

2009-09-02 22:42:17

Cvp

herbap

mevzu çözülmüş ama eskilerden kalma şöyle bir dersim var

http://vimeo.com/2843510

konuyu sonradan takip edecek arkadaşlar için faydalı olabilir

2009-09-04 10:22:40

Cvp

Guero

Ders için teşekkürler Osman abi...

2009-09-04 11:29:15

Cvp

Erkan

hasan bu koda küçük bir arayüz yazabilirmisin?
kod içerisinde altını çizdiğim bölümleri kontrol edecek ve kodu çalıştıracak bir arayüz.

(
[u]baklaSayisi[/u] = 50
for i=0 to baklaSayisi do
(
b=Box [u]length[/u]:5 [u]width[/u]:30 height:((curveLength dolar 1)/baklaSayisi) name:("Bakla"+i as string)
b.pos.controller = Path_Constraint ()
b.pos.controller.path = dolar
b.pos.controller.percent = (i as float*100/baklaSayisi)
)
for l=1 to baklaSayisi-1 do
(
(execute ("dolarBakla"+l as string)).lookat = (execute ("dolarBakla"+(l+1) as string))
(execute ("dolarBakla"+(l+1) as string)).transform.controller.flip = true
)
dolarBakla0.lookat=dolarBakla1
dolarBakla1.transform.controller.flip = true
for obj in dolarBakla* 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 dolarBakla*
delete dolarobjBakla0
for i=1 to dolarobjBakla*.count-1 do
(
hng=Hinge name:("rctBakla"+i as string)
obj=(execute("dolarobjBakla"+i as string))
hng.childBody = obj
hng.hasParentBody = on
hng.ParentBody = (execute ("dolarobjBakla"+(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 ("dolarobjBakla"+(dolarobjBakla*.count) as string))
hng.childBody = obj
hng.hasParentBody = on
hng.ParentBody = dolarobjBakla1
hng.parentTransform = (matrix3 obj.transform.row3 obj.transform.row2 obj.transform.row1 hng.parentTransform.row4)
hng.alignToParentSpace()
)


kenan işte istediğin kodlar
reactorde zincir yapan kod.

tank paleti şeklinde bir spline ç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.

oluşan paletin 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.

buda tankı sürmek için yazdığım kod

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

(
dolarCarWheel01.velocity = spn1.value
dolarCarWheel02.velocity = spn1.value
dolarCarWheel03.velocity = spn1.value
dolarCarWheel04.velocity = spn1.value
dolarCarWheel05.velocity = spn1.value
)
on spn2 changed val do
(
dolarCarWheel06.velocity = spn2.value
dolarCarWheel07.velocity = spn2.value
dolarCarWheel08.velocity = spn2.value
dolarCarWheel09.velocity = spn2.value
dolarCarWheel10.velocity = spn2.value
)
on spn3 changed val do
(
dolarCarWheel01.gain = spn3.value
dolarCarWheel02.gain = spn3.value
dolarCarWheel03.gain = spn3.value
dolarCarWheel04.gain = spn3.value
dolarCarWheel05.gain = spn3.value
)
on spn4 changed val do
(
dolarCarWheel06.gain = spn4.value
dolarCarWheel07.gain = spn4.value
dolarCarWheel08.gain = spn4.value
dolarCarWheel09.gain = spn4.value
dolarCarWheel10.gain = spn4.value
)
)
createdialog palet


bu kodun sürdüğü tankta burda
[url]http://www.4dizayn.com.tr/anim/cop/tank.zip[/url]
bu dosyayı aç
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.

çıkan arayüzde sağ taraftaki değerler sağ paleti soldakiler sol paleti kontrol ereder

ü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ıla bilir.
[url]http://www.tr3d.com/index.php?id=galeri&r=2857[/url]

haydi kolay gelsin.

2009-09-05 01:33:07

Cvp

Guero

Erkan abi şuan sadece rollout ile kayan panel yapıyorum,buton oluşturuyorum,spinner yapıyorum uyarı mesajı yapabiliyorum Ama dediğini gabliba yapamıyorum ama çok yakında yapabilirim çünkü hergün yeni şeyler öğreniyorum...

2009-09-05 08:37:00

Cvp

Erkan

tamam işte sonuca çok yaklaşmışsın.
ikinci scriptin şu bölümüne bak

[quote=50130] Yazan: Erkan
...........................................................
........ tankı sürmek için yazdığım kod

rollout palet "PALET" width:162 height:85
(
[font face=Arial] spinner [u]spn1[/u] "" pos:[15,21] width:65 height:16 range:[-100,100,0][/font]
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 [u]spn1[/u] changed val do
(
dolarCarWheel01.velocity = [u]spn1[/u].value
dolarCarWheel02.velocity = [u]spn1[/u].value
dolarCarWheel03.velocity = [u]spn1[/u].value
dolarCarWheel04.velocity = [u]spn1[/u].value
)..........
.....................................................................
........... dolarCarWheel09.gain = spn4.value
dolarCarWheel10.gain = spn4.value
)
)
createdialog palet

[/quote]
sahnedeki CarWheel ´lerin velocity değerleirni spn1.value yazarak olşturduğum spinner´a bağlamışım.

sende 3tane spinner yap
kodun içerisinde altı çizili değerlerin karşısındaki rakamları sil yerine
spn1.value
spn2.value
spn3.value .....gibi yazarak bu değerleri oluşturduğun spiner´lara bağla

bir tanede buton oluştur.
şurada anlattığım gibi
[url]http://www.tr3d.com/index.php?id=forum&f=1&oku=48208[/url]
bu kodu butona yerleştir.
tamamdır bence çok güzel bir başlangıç olur bu.

kolay gelsin

2009-09-05 09:27:24

Cvp

Guero

Erkan abi şöyle bir script yaptım ama yanlış olan ne anlayadım bir yardım edermisin...

[left]rollout roll "kutu yapar"
(
button mybuton "kutu"
spinner spn1 "width" range:[40,100,40]
spinner spn2 "height" range:[40,100,40]

on mybuton pressed do
(
küre = box()

)

on spn1 changed val do
(
küre.width = spn1.value
)

on spn2 changed val do
(
küre.height = spn2.value
)


)
createdialog roll[/left]


Bu scriptte kutu ile luştrduğum box´un width değerini spinner´a bağlamak istiyorum ama sorun nedir anlamadım...

2009-09-05 12:07:50