Я знаю как рагдол сделать в Newton. Ща времени нету всё расписывать, скоро напишу (денька через 3).
Жди =)Добавлено (2008-01-11, 8:31 Am)
---------------------------------------------
Надо заполнять форум!!!
Добавлено (2008-01-14, 8:02 Am)
---------------------------------------------
Ну вот и время появилось. Объясню на примере сосиски, которая падает на пол.
Делаем в 3DMax капсулу радиусом 12 единиц, высотой 40 единиц и опускаем на 20 единиц вниз(чтобы центр капсулы находился в цетре сцены).
Создаём 1 кость от низа капсулы до середины а 2 кость от середины до верха(называем кости соответственно NIZ и VERH).
Применяем к капсуле модификатор Skin вносим в него кости и настраиваем их так, чтобы каждая отвечала за свою половину капсулы.
Всё это экспортируем с помощью B3DPipeline, при экспорте обязательновыставить галочки напротив Export Animation и Export Bones. Дальше сам код в Блице
Создаем сцену и т.п:
Include "newton.bb"
Graphics3D 640,480,32,2
SetBuffer BackBuffer()
light=CreateLight()
cam=CreateCamera()
PositionEntity cam,0,30,-150
RotateEntity cam,10,0,0
Создадим пол и повернём(чтобы капсула не провалилась):
plane=CreatePlane()
PositionEntity plane,0,-5,0
EntityColor plane,0,128,64
RotateEntity plane,0,0,10
Загружаем модель и находим в ней кости:
blob=LoadAnimMesh("blob.b3d")
PositionEntity blob,0,50,0
verh=FindChild(blob,"Имя 1 кости в редакторе")
niz=FindChild(blob,"Имя 2 кости в редакторе")
Создадим 2 куба, которые свяжут наши кости и физбоксы(кубы ставить обязательно, если надо расскажу почему):
ragverh=CreateCube()
ScaleEntity ragverh,9,9,9
EntityColor ragverh,205,69,50
PositionEntity ragverh,0,60,0
ragniz=CreateCube()
ScaleEntity ragniz,9,9,9
EntityColor ragniz,0,128,255
PositionEntity ragniz,0,40,0
Создаём мир и ПОЛ, на который упадёт сосиска:
phWorldCreate(0)
phWorldSetGravity(0,-100,0)
pol=phBodyCreateBox(1000,5,1000,0)
phBodySetRot(pol,0,0,10)
Создаём физбокс, обязательно назначаем куб родителем для кости:
EntityParent verh,ragverh
bverh=phBodyCreateBox(4.5,4.5,4.5,10)
phBodySetPos(bverh,0,60,0)
А физбокс - родителем для куба:
phBodySetEntity(bverh,ragverh)
Аналогично для второй кости:
EntityParent niz,ragniz
bniz=phBodyCreateBox(4.5,4.5,4.5,10)
phBodySetPos(bniz,0,40,0)
phBodySetEntity(bniz,ragniz)
Соединяем физбоксы джоинтом:
lokot=phJointBallCreate(0,50,0,bverh,bniz)
phJointBallSetLimit(lokot,0,1,0,45,45)
Заключительная часть:
While Not KeyHit(1)
WorldStep(0.05)
UpdateWorld
RenderWorld
Flip
Wend
phWorldDestroy()
End
Добавлено (2008-01-14, 8:03 Am)
---------------------------------------------
