forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на Blitz3D (http://forum.boolean.name/forumdisplay.php?f=14)
-   -   jode 2 edition (http://forum.boolean.name/showthread.php?t=174)

jimon 07.10.2005 20:09

примерные спецификации (мысли в слух)

1)стандартный заголовок :
"jODEe
0.2v"
заголовок описан двумя строчками

2)int - количество обектов
3)обекты

4)int - количество joinов
5)joints


описание обекта :
byte - тип
int - id
3int - position
3int - scale
3int - rotate

описание joint'а варьируется от его типа
1) тип fixed (первый реализованый тип - он реализован еще в первой версии протокола)
int - id
int - id первого обекта
int - id второго обекта


размер файла минимум : 21 байт
каждый обект занимает 41 байт
joint типа fixed занимает 12 байт

jimon 08.10.2005 16:52

вот еще мой пост из серии изучаем ode :))

изучаем сочленение типа hinge (Сгибание)



теперь обясняю что такое точка сойденения (anchor) и что такой ось поворота (axis)

anchor ето точка сойденения обектов body 1 и body2
координаты точки задаются командой ODE_dJointSetHingeAnchor(joint,x#,y#,z#)
координаты задаются глобальные ! ето важно

тоесть мы получаем сообствено триугольник

----c
----/\
---/--\
--/----\
a/____\b

где a и b ето body 1 и body 2 соотвествено
и c ето anchor

длина отрезка ac и длина отрезка bc всегда const
может изменятся в очень маленьком диапазоне
если растояние сильно изменится - система или 'взорвется' или ode выдаст ошибку

растояние между ab может менятся от 0 до ac+bc



ось поворота тожет очень важный аргумент
она задается командой ODE_dJointSetHingeAxis (joint, x#, y#, z#)
значение x,y,z ето координаты вектора , начало вектора - точка anchor

ось что показана на рисунке можно задать вот так ODE_dJointSetHingeAxis (joint, 0, 1, 0)



теперь реализуем ето все в ode :))

Код:

test_space=ODE_dSimpleSpaceCreate(space)

space2%=space%
space%=0


g.TODEGeom = New TODEGeom
g\mesh=CreateCube()
MoveEntity g\mesh,0,5,-20
EntityColor g\mesh,0,255,0
g\body = ODE_dBodyCreate()
g\geom = ODE_create_object("cube",g\body,g\mesh,1,1,1,1)
tode1=Handle(g)
body1=g\body

ODE_dSpaceAdd(test_space,g\geom)


g.TODEGeom = New TODEGeom
g\mesh=CreateCube()
MoveEntity g\mesh,0,15,-20
EntityColor g\mesh,0,255,0
g\body = ODE_dBodyCreate()
g\geom = ODE_create_object("cube",g\body,g\mesh,1,1,1,1)
tode2=Handle(g)
body2=g\body

ODE_dSpaceAdd(test_space,g\geom)

joint2 = ODE_dJointCreateHinge()
ODE_dJointAttach joint2, body2, body1
ODE_dJointSetHingeAnchor(joint2, 0,10, -20)
ODE_dJointSetHingeAxis joint2, 1, 0, 0

space%=space2%

вот код обекта который я создал



сообствено обект ето два кубика ... один снизу и другой сверху
между ними (ровно посредине) находится точка сойденения (альфа - я так ее назвал)


jimon 08.10.2005 18:30

я офигел щас :o
експерементирую с jointами... убрал создание нового мира и зделал чтобы обекты все записывались к общему миру
и что? ОНО РАБОТАЕТ! тоесть получается что я ошибался нащот того что обязательно все привязывать к новому миру :( я в шоке :dontknow:
буду продолжать експеременты дальше



ps. написал примитивный дебагер етого вида сочленения
скрин в атаче

jimon 09.10.2005 17:06

продолжая тему изучаем ode

joint типа ball (шарик в разьеме)



ето чтото типа hinge
только упрощеное :))

вообщем создается ето чудо командой ODE_dJointCreateBall
позиция точки задается командой ODE_dJointSetBallAnchor(joint,x#,y#,z#)
x,y,z также в глобальных координатах

вот так ето выглядит в jode :




вообщем основы формата я уже зделал
надо только написать загрузку всех типов соейденений и усе :))



так как мне в западло было писать отдельный пример
выкладываю все что есть по етому типу сойденения и нетолько
ps. не забывайте что space в примере - задать всем обектам rand вектора на правления и поворота

jimon 13.10.2005 19:37

и так новости :))

я закончил jode 2
он проходит бета тестирование

щас буду писать редактор моделей
и ... и пытатся продать его буржуям ;)

freeware версий небудет наверно, хотя с етим надо будет еще разобратся

SubZer0 14.10.2005 00:29

Цитата:

Originally posted by jimon@Oct 13 2005, 05:37 PM
... и пытатся продать его буржуям ;)
могу тебя огорчить, что ничего у тя с этим не выйдет, в условии распространения ОДЕ написано, что вы НЕ можете создавать свой физ движок на основе ОДЕ... а буржуи они такие, что все по законам... так что смотри, чтоб сам не попал. :)

jimon 14.10.2005 08:44

етоже над-делка над ode, а не переделка самого ode
покрайней мере я так думаю

BG-General 14.10.2005 10:31

Это тоже самое, что и Аркон когда-то враппер для Блитца делал. Так что я думаю, проканает.

jimon 14.10.2005 21:20

вот полчасика попарился
зделал модельку машинки в jode

управление T,G - вперед и назад (F,H влево и вправо только оно еще коряво работает)
q - показать\скрыть debug
w - wireframe
стрелочки и мышка - управляем камерой


файл, поскольку он является промежуточной версией, был удален из-за нехватки места на сервере

SubZer0 15.10.2005 05:37

Цитата:

Originally posted by jimon@Oct 14 2005, 07:20 PM
вот полчасика попарился
зделал модельку машинки в jode

управление T,G - вперед и назад (F,H влево и вправо только оно еще коряво работает)
q - показать\скрыть debug
w - wireframe
стрелочки и мышка - управляем камерой

гы!!! ржали с Impersonalis весь вечер!!! ну насмешил!! :lol: :lol: :lol:

impersonalis 15.10.2005 05:49

jimon, ты, конечно, не обижайся , но с физикой ты что-то напортачил =(

SubZer0 15.10.2005 05:52

Цитата:

Originally posted by impersonalis@Oct 15 2005, 03:49 AM
jimon, ты, конечно, не обижайся , но с физикой ты что-то напортачил =(
ага, такое ощущение, что у машины двигатель к колесу карданом прикручен а к корпусу его прикрутить забыли... :)

jimon 15.10.2005 08:50

вопервых я приатачил двигатель ко всем колесам
вовторых поворот я зделал с помощью поворота оси поворота (получилось фигня - появление кольцевой траектории вокруг колес с радиусом r от центра оси)
и в третих
вес обектов то : колеса по 1 кг , машина 20 кг
жосткость - заднии колеса без подвестки (слегка)
переднии - мягкие

притом учитывай кубик сверху

вот и получилось фигня :)
да тут надо только с параметрами jointов разобратся
и вот с етим :
ODE_dJointSetHinge2Param(joint[i], dParamSuspensionERP, .3)
ODE_dJointSetHinge2Param(joint[i], dParamSuspensionCFM, .065)


2 саб :
то что ты говориш получается не из-за самой физики а расположения колес от точки сойденения - слишком они далеко , вот и получается фигня
тут же колеса с корпусом сойденены hinge-2 joint :))

jimon 15.10.2005 17:39

ну что же :))
разобрался я с управлением, поворотами, подвеской

отличия от предыдущего теста:
+центр сочленения в центре колес
+поменял оси сочленения
+зделал поворот
+вставил обработку угловых сил обектов машинки
+переделал слегка машинку
+машинка потежелее стала (100 кг корпус, по 10 кг каждое колесо)
+все пашет :))

управление тоже


файл, поскольку он является промежуточной версией, был удален из-за нехватки места на сервере

SubZer0 15.10.2005 23:34

Цитата:

Originally posted by jimon@Oct 15 2005, 03:39 PM
ну что же :))
разобрался я с управлением, поворотами, подвеской

вооо, теперь можно смотреть, теперь только оттюнинговать осталось..

:super:


Часовой пояс GMT +4, время: 14:48.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot