|
Проекты на Blitz3D Обсуждение будущих проектов, демок, набор команды и т.п. |
07.10.2005, 20:09
|
#1
|
|
примерные спецификации (мысли в слух)
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 байт
|
|
|
08.10.2005, 16:52
|
#2
|
|
вот еще мой пост из серии изучаем 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%
вот код обекта который я создал
сообствено обект ето два кубика ... один снизу и другой сверху
между ними (ровно посредине) находится точка сойденения (альфа - я так ее назвал)
|
|
|
08.10.2005, 18:30
|
#3
|
|
я офигел щас :o
експерементирую с jointами... убрал создание нового мира и зделал чтобы обекты все записывались к общему миру
и что? ОНО РАБОТАЕТ! тоесть получается что я ошибался нащот того что обязательно все привязывать к новому миру я в шоке
буду продолжать експеременты дальше
ps. написал примитивный дебагер етого вида сочленения
скрин в атаче
|
|
|
09.10.2005, 17:06
|
#4
|
|
продолжая тему изучаем ode
joint типа ball (шарик в разьеме)
ето чтото типа hinge
только упрощеное )
вообщем создается ето чудо командой ODE_dJointCreateBall
позиция точки задается командой ODE_dJointSetBallAnchor(joint,x#,y#,z#)
x,y,z также в глобальных координатах
вот так ето выглядит в jode :
вообщем основы формата я уже зделал
надо только написать загрузку всех типов соейденений и усе )
так как мне в западло было писать отдельный пример
выкладываю все что есть по етому типу сойденения и нетолько
ps. не забывайте что space в примере - задать всем обектам rand вектора на правления и поворота
|
|
|
13.10.2005, 19:37
|
#5
|
|
и так новости )
я закончил jode 2
он проходит бета тестирование
щас буду писать редактор моделей
и ... и пытатся продать его буржуям
freeware версий небудет наверно, хотя с етим надо будет еще разобратся
|
|
|
14.10.2005, 00:29
|
#6
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
Originally posted by jimon@Oct 13 2005, 05:37 PM
... и пытатся продать его буржуям
|
могу тебя огорчить, что ничего у тя с этим не выйдет, в условии распространения ОДЕ написано, что вы НЕ можете создавать свой физ движок на основе ОДЕ... а буржуи они такие, что все по законам... так что смотри, чтоб сам не попал.
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
14.10.2005, 08:44
|
#7
|
|
етоже над-делка над ode, а не переделка самого ode
покрайней мере я так думаю
|
|
|
14.10.2005, 10:31
|
#8
|
Нуждающийся
Регистрация: 05.09.2005
Сообщений: 60
Написано 2 полезных сообщений (для 2 пользователей)
|
Это тоже самое, что и Аркон когда-то враппер для Блитца делал. Так что я думаю, проканает.
|
(Offline)
|
|
14.10.2005, 21:20
|
#9
|
|
вот полчасика попарился
зделал модельку машинки в jode
управление T,G - вперед и назад (F,H влево и вправо только оно еще коряво работает)
q - показать\скрыть debug
w - wireframe
стрелочки и мышка - управляем камерой
файл, поскольку он является промежуточной версией, был удален из-за нехватки места на сервере
|
|
|
15.10.2005, 05:37
|
#10
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
15.10.2005, 05:49
|
#11
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
jimon, ты, конечно, не обижайся , но с физикой ты что-то напортачил =(
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
15.10.2005, 05:52
|
#12
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
Originally posted by impersonalis@Oct 15 2005, 03:49 AM
jimon, ты, конечно, не обижайся , но с физикой ты что-то напортачил =(
|
ага, такое ощущение, что у машины двигатель к колесу карданом прикручен а к корпусу его прикрутить забыли...
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
15.10.2005, 08:50
|
#13
|
|
вопервых я приатачил двигатель ко всем колесам
вовторых поворот я зделал с помощью поворота оси поворота (получилось фигня - появление кольцевой траектории вокруг колес с радиусом r от центра оси)
и в третих
вес обектов то : колеса по 1 кг , машина 20 кг
жосткость - заднии колеса без подвестки (слегка)
переднии - мягкие
притом учитывай кубик сверху
вот и получилось фигня
да тут надо только с параметрами jointов разобратся
и вот с етим :
ODE_dJointSetHinge2Param(joint[i], dParamSuspensionERP, .3)
ODE_dJointSetHinge2Param(joint[i], dParamSuspensionCFM, .065)
2 саб :
то что ты говориш получается не из-за самой физики а расположения колес от точки сойденения - слишком они далеко , вот и получается фигня
тут же колеса с корпусом сойденены hinge-2 joint )
|
|
|
15.10.2005, 17:39
|
#14
|
|
ну что же )
разобрался я с управлением, поворотами, подвеской
отличия от предыдущего теста:
+центр сочленения в центре колес
+поменял оси сочленения
+зделал поворот
+вставил обработку угловых сил обектов машинки
+переделал слегка машинку
+машинка потежелее стала (100 кг корпус, по 10 кг каждое колесо)
+все пашет )
управление тоже
файл, поскольку он является промежуточной версией, был удален из-за нехватки места на сервере
|
|
|
15.10.2005, 23:34
|
#15
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
Originally posted by jimon@Oct 15 2005, 03:39 PM
ну что же )
разобрался я с управлением, поворотами, подвеской
|
вооо, теперь можно смотреть, теперь только оттюнинговать осталось..
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:09.
|