forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   АВТОМАТ,я замучился с отскаливанием модели в примере с регдолом (http://forum.boolean.name/showthread.php?t=9369)

Ganociy 07.10.2009 20:08

АВТОМАТ,я замучился с отскаливанием модели в примере с регдолом
 
Начитавшись учебника по физиксу меня торкнуло на подвиги. Решил я сделать кровавую стрелялку про зомби.
Всё есть : модель, анимация , физ . скелет.
Ты всё написал в регдоле , но забыл одно про отскаливание моделек.
Пишу в функции создания человека :
ScaleEntity M\Mesh,0.5,0.5,0.5
ScaleEntity M\pxMesh ,0.5,0.5,0.5
Вклучаю , создаю модельку , включаю регдолл и вместо того чтобы реалистично падать она взмывает в небо так что не увидишь её.
Позже я понял , что модель принимает размеры, а физ скелет то нет.
Впоследующие разы я упорно пытался отскалить физ скелет но безуспешно!!!
Подскажи как мне это исправить:''((

ABTOMAT 07.10.2009 20:41

Ответ: АВТОМАТ,я замучился с отскаливанием модели в примере с регдолом
 
В той же теме в посте №4 читаем:
Цитата:

В блитзе с объектом, из которого будете делать Hull, НЕ использйуте команды: TurnEntity, RotateEntity, MoveEntity, PositionEntity, ScaleEntity. Вместо них надо использовать PositionMesh, RotateMesh, ScaleMesh.
Либо, если очень надо, то юзаем функцию KillTransformMatrix(mesh)
Код:

Function KillTransformMatrix(mesh)
        ScaleMesh mesh, GetScaleX(mesh),GetScaleY(mesh),GetScaleZ(mesh)
        RotateMesh mesh, EntityPitch(mesh,1), EntityYaw(mesh,1), EntityRoll(mesh,1)
        PositionMesh mesh, EntityX(mesh,1), EntityY(mesh,1), EntityZ(mesh,1)       
End Function

;масштаб по X
Function GetScaleX#(Entity)
        S_Componentx# = GetMatElement(Entity, 0, 0)
        S_Componenty# = GetMatElement(Entity, 0, 1)
        S_Componentz# = GetMatElement(Entity, 0, 2)
        Return Sqr(S_Componentx#*S_Componentx# + S_Componenty#*S_Componenty# + S_Componentz#*S_Componentz#)
End Function

;масштаб по Y
Function GetScaleY#(Entity)
        S_Componentx# = GetMatElement(Entity, 1, 0)
        S_Componenty# = GetMatElement(Entity, 1, 1)
        S_Componentz# = GetMatElement(Entity, 1, 2)
        Return Sqr(S_Componentx#*S_Componentx# + S_Componenty#*S_Componenty# + S_Componentz#*S_Componentz#)
End Function

;масштаб по Z
Function GetScaleZ#(Entity)
        S_Componentx# = GetMatElement(Entity, 2, 0)
        S_Componenty# = GetMatElement(Entity, 2, 1)
        S_Componentz# = GetMatElement(Entity, 2, 2)
        Return Sqr(S_Componentx#*S_Componentx# + S_Componenty#*S_Componenty# + S_Componentz#*S_Componentz#)
End Function


Ganociy 08.10.2009 18:24

Ответ: АВТОМАТ,я замучился с отскаливанием модели в примере с регдолом
 
А нет обходного путя не в 2 км а в 2см. Нет я конечно могу взять в один фаил ентот код ,а потом его загрузить , но время, ресурсы.
Короче со ScaleMesh я тоже попробовал не фига . Подскажи что-нибудь другое.

ABTOMAT 08.10.2009 18:31

Ответ: АВТОМАТ,я замучился с отскаливанием модели в примере с регдолом
 
Причина проблемы в том, что Scale/Move/Translate/Position/RotateEntity меняет матрицу трансформации объекта, но не меняет положения вершин. А в физикс передаются именно координаты вершин. Значит, ищи способ изменить их при передаче в соответствии с поворотом, скейлом, и т.д. Один способ я предложил и он мне нравится :). Если он не нравится тебе - флаг в руки...

Артем Валерьевич 26.11.2009 18:30

Ответ: АВТОМАТ,я замучился с отскаливанием модели в примере с регдолом
 
Бота разве нельзя отскалить в максе.

Ganociy 26.11.2009 20:10

Ответ: АВТОМАТ,я замучился с отскаливанием модели в примере с регдолом
 
можно то можно. Ну отскалил... А если не подошло ? Ещё раз отскаливать!))) Девелопер)))

Артем Валерьевич 26.11.2009 21:11

Ответ: АВТОМАТ,я замучился с отскаливанием модели в примере с регдолом
 
Ganociy ты че, у тебя в максе все в разных масштабах? Ну блин девелопер.
Насмешил. или кажный бот разного размера?


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

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