forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=108)
-   -   xLoadMesh и xLoadAnimMesh (http://forum.boolean.name/showthread.php?t=8632)

Данил 08.07.2009 22:57

xLoadMesh и xLoadAnimMesh
 
Играюсь с Анимациями на ксорсе.
Есть тип, в нем модель.
Заметил, если я делаю модели анимацию ( гружу с помощью xLoadAnimMesh, все прибомбасы) , то уже при 100 объектах 20 фпс!
А если просто модель загружаю, то на 20 фпсах - держит 500-700 объектов.

ЭТо нормальным считается, или у меня руки кривые и я что-то не так делаю?
Цитата:

Type T_Entity
Field X:Int
Field Z:Int
Field Model:Int
End Type

Function CreateUnit:T_Entity()
Local Entity:T_Entity = New T_Entity
Entity.X = Rand(- 250, 250)
Entity.Z = Rand(- 250, 250)
Entity.Model:Int = xLoadAnimMesh("TestUnitBone.b3d")
xExtractAnimSeq Entity.Model, 0, 19
xExtractAnimSeq Entity.Model, 20, 30
xExtractAnimSeq Entity.Model, 31, 60
xExtractAnimSeq Entity.Model, 61, 70


xUpdateNormals Entity.Model

xEntityColor Entity.Model, 90, 90, 90
xAnimate Entity.model, 1, 0.9, 2
xEntityPickMode Entity.Model, 2
xPositionEntity Entity.Model, Entity.X, 0, Entity.Z
ListAddLast (EntityList, Entity)
Return Entity
End Function

Knightmare 08.07.2009 23:02

Ответ: xLoadMesh и xLoadAnimMesh
 
Все нормально. Скелетка дорогое удовольствие. Скорость можно поднять за счет хардварного скиннинга.

Данил 08.07.2009 23:04

Ответ: xLoadMesh и xLoadAnimMesh
 
По-подробнее можно.
И еще - была бы не скелетная анимация - не такая разница была бы?

Knightmare 08.07.2009 23:07

Ответ: xLoadMesh и xLoadAnimMesh
 
В примерах должен быть хардварный скиннинг. Если нет - залью пример.
Цитата:

И еще - была бы не скелетная анимация - не такая разница была бы?
А других вариантов и нет по сути. Ну морфинг еще, но он не поддерживается да и быстрее только за счет того, что не нужно пересчитывать иерархию костей. Но например такие вещи как рэгдолл им не сделать.
З.Ы. Еще есть вариант пообъектной анимации, но выглядит не очень и подходит для каких-нить роботов скорее.

Данил 08.07.2009 23:17

Ответ: xLoadMesh и xLoadAnimMesh
 
т.е. делать 500 скелетных монстров в 3д - не вариант? ну как-то ведь делают это? или на ксорс - это проблема?

Knightmare 08.07.2009 23:20

Ответ: xLoadMesh и xLoadAnimMesh
 
Сделать можно. Но все не так просто как хотелось бы, поэтому пока можешь считать лимитом 50 скиненых объектов в кадре.

Данил 09.07.2009 01:18

Ответ: xLoadMesh и xLoadAnimMesh
 
Knightmare, в принципе, ты прав. 50 - это даже много на экран. 10 хватает)...

а так - разбросать повсей карте эти 500 скелетов - норм работает

Knightmare 09.07.2009 01:21

Ответ: xLoadMesh и xLoadAnimMesh
 
В мясных стратегиях и играх аля АлиенШутер (но там не 3Д) может быть столько. В принципе можно сделать инстансинг скелетов (в 2 раза повысится скорость где-то, из минусов - все инстансы будут в одном положении, для мяса в прочем не критично и не до того будет).

moka 09.07.2009 03:34

Ответ: xLoadMesh и xLoadAnimMesh
 
Смотрим StarCraft II и поражаемся анимации которую он рендерит в экране, когда орды зергов нападают на людишек..
Оптимизации. Сейчас ЛоДов на уровне движка нету. Если их делать - то это уже будет предрасчёт под First/Third Person вид.
А ЛоД должен быть полностью объекта и т.п.
Например в Half-Life 2, там на скелете лод есть, и на моделе отдельно при этом. И разницы играя не видишь, а производительность вырастает весьма и весьма..

johnk 09.07.2009 09:36

Ответ: xLoadMesh и xLoadAnimMesh
 
Все дружно переходим на ДХ10, там есть инстансинг анимаций :-D
http://www.youtube.com/watch?v=JB2kkWkfJtw
http://www.youtube.com/watch?v=C9i5HLANhbs

Данил 09.07.2009 12:13

Ответ: xLoadMesh и xLoadAnimMesh
 
блин, мне бы то, что в 1 и во 2 видяхе очень даже бы не помешало...

за собой заметил, что я всю крдерскюу жизнь делаю алиен шутеры о_О все ,обречен


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

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