forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты C++ (http://forum.boolean.name/forumdisplay.php?f=56)
-   -   Sigel (http://forum.boolean.name/showthread.php?t=4960)

jimon 27.01.2009 14:25

Ответ: Sigel
 
надо юзать морфинг нескольких анимаций для такого, а не анимацию отдельных костей

HolyDel 27.01.2009 14:33

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

jimon 27.01.2009 14:40

Ответ: Sigel
 
HolyDel
ну вот анимируешь ты отдельно только верх анимацией стрельбы и только низ анимацией бега
и сойденяешь эти две анимации, по-сути результат тоже самое что отдельная анимация для костей, но качество лутче

ps. посмотри либу cal3d https://gna.org/projects/cal3d/

tormoz 27.01.2009 20:29

Ответ: Sigel
 
я имел ввиду взять алгоритм анимирования у блитца
Он очень быстрый (раз в 300 быстрее чем в ксорсе, например)

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

moka 28.01.2009 02:17

Ответ: Sigel
 
Олег, насчёт общего скелета, как ты привёл пример - это слишком, ладно общий скелет для всех птиц, с разной геометрией, или для всех разных гномов - это да.
Я понимаю, ты клонишь к идее загрузки анимации отдельным частям/группам_костей? Я считаю это наоборот муторности в некотором роде, да и файл анимации это не каждый фрейм, поэтому тут не много места.
Насчёт анимирования костей, и их наследников соответственно, я в самом начале сказал, но могу немного дополнить.
У меня в голове 2 идеи, вторая требует дополнительной туулзы, но и результат в несколько раз лучше, правдо это и посложнее в разы.
Начну с первой идеи, всё просто: когда указываешь отдельно кости другую анимацию, все её дети тоже наследуют это, но от кости можно получить по индексу, какой секьюэнс (анимацаия) играется на ней, и сколько их наложено, всегда будет минимум одна - та что всей модели (если не стоп стоит на всю модель), накладывая дополнительную анимацию, будет уже 2 анимации, при этом изначально, коэфицент применения 100%, поэтому и просчитывать будет только эту наложенную (оптимизация, ну это и так понятно), но тут главная мысль в чём. Кости можно указать силу применения 0.0-1.0 на любой индекс наложенной анимации, К примеру первая анимация (ну та что на всю модель), как и все наложенные 1.0, а наложив вторую, мы некоторым костям указываем ниже 1.0, к примеру одной из кости 0.5, таким образом на эту кость будет применено 50% изначальной и 50% новой анимации. Таким образом плавный переход. Скажи это технически возможно (думаю да, но не совсем просто), и второе, не будет ли это сильно потреблять ресурсы?
Вторая идея, исходит из первой, но более продвинута и удобна. Заключается она в том, что группы для анимации, мы указываем в специальной туулзе заранее. К примеру представь, мы загружаем только сделанную модель со скелетом, предположим простой конь, далее в туулзе мы видим список, в котором одна группа - весь скелет, создаём новую группу, и выделяем кости для головы, и тем что на шее, указываем уже коэффиценты пониже, визуально очень удобно отобразить по цвету вершин: зелёные - те что пренадлежат группе; крастные - те что не пренадлижат; и частичные переходы от коэффицента. Далее в коде будет только возможность получения этих групп сделанных в этой туулзе, которую кстати под 3д макс написать это по сути не слишком сложно, просто новый параметр классу кости, визуализирование, и использование этого для экспортинга (макс скрипт такой уровень доступа думаю потдерживает). Получая в коде группы (нулевая по дефолту - весь скелет), мы можем применять анимацию чисто группам. Этот варриант меня привлекает, т.к. даст реальную динамику в анимации, и очень неплохую при этом, к примеру анимирование рук по отдельности, и головы, рта (речь, хотя тут если речь, то программно юзая функции звуковых движков, для динамики), и запястий с пальцами, короче говоря это даст неслабый функционал анимации в движке. jimon, по сути это и есть морфинг, так?
Что думаете?

HolyDel 29.01.2009 23:02

Ответ: Sigel
 
Вложений: 1
вот демка.
стрелки вправо-влево - менять сцену (рисующийся примитив)
стрелки вверх - вниз - менять число примитивов рисующихся за раз.
пробел - заморозить сцену (т.е. рисоваться будет одна и та же картина)
таб - менять режим блендинга между обычным и аддиативным.

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

вот мой результат:
Цитата:

CPU: 2261 MHz.
Memory:1054 of 2047
VENDOR:NVIDIA Corporation
RENDERER:GeForce 9600M GS/PCI/SSE2
VERSION:2.1.2

Video mode:
Screen Width:640
Screen Height:480
Screen Depth:32
Screen Mode:2
FSAA :16x

Simple Lines :0.275716
Solid Rects :0.309157
Solid Ovals :2.7693
Rounded Rects :2.15428
Width Lines :0.516317
Width, Rounded lines :1.23561
Void Rects :0.303669
Void Ovals :2.75272

jimon 29.01.2009 23:42

Ответ: Sigel
 
вот :
Цитата:

CPU: 2999 MHz.
Memory:1405 of 2047
VENDOR:NVIDIA Corporation
RENDERER:GeForce 9600 GT/PCI/SSE2
VERSION:3.0 NVIDIA 181.00

Video mode:
Screen Width:640
Screen Height:480
Screen Depth:32
Screen Mode:2
FSAA :0x

Simple Lines :0.169069
Solid Rects :0.189563
Solid Ovals :1.7903
Rounded Rects :1.29214
Width Lines :0.28471
Width, Rounded lines :0.779322
Void Rects :0.185306
Void Ovals :1.73912


HolyDel 29.01.2009 23:43

Ответ: Sigel
 
jimon, спасибо!

ABTOMAT 30.01.2009 00:00

Ответ: Sigel
 
Цитата:

Сообщение от jimon (Сообщение 96035)
HolyDel
ну вот анимируешь ты отдельно только верх анимацией стрельбы и только низ анимацией бега
и сойденяешь эти две анимации, по-сути результат тоже самое что отдельная анимация для костей, но качество лутче

ps. посмотри либу cal3d https://gna.org/projects/cal3d/

Ненене, а если надо внезапно поменять анимацию ногам на прыжок, а рукам оставить стрельбу? Морфинг тут не покатит

SBJoker 30.01.2009 01:52

Ответ: Sigel
 
Код:

CPU:    3300 MHz.
Memory:2047 of 2047
VENDOR:NVIDIA Corporation
RENDERER:GeForce 8800 GT/PCI/SSE2/3DNOW!
VERSION:2.1.2

Video mode:
Screen Width:1280
Screen Height:1024
Screen Depth:32
Screen Mode:1
FSAA :0x

Simple Lines        :0.273832
Solid Rects        :0.305111
Solid Ovals        :1.94083
Rounded Rects        :1.44492
Width Lines        :0.388358
Width, Rounded lines        :0.925493
Void Rects        :0.305494
Void Ovals        :1.9416


moka 30.01.2009 02:27

Ответ: Sigel
 
Олег, слушай, я сижу щас в последнее время на Mac'ах, они как тебе известно чисто на OpenGL, есть ли у тебя возможность чтонибудь скомпилить под Mac? Я с удовольствием затещу на 2 системах, eMac (1.25 GHz PowerPC G4; 512+256 DDR SDRAM; AGP ATI 32Mb (больше инфы о видяхи не нашёл)), и второй, это MacBook (Intel Core 2 Duo 2.0 GHz, 1066MHz fb; 1Gb DDR3 SDRAM; NVIDIA GeForce 9400M, 256MB DDR3 SDRAM).
Могу на обоих тестить.
В общем если есть возможность, я с радостью!

HolyDel 30.01.2009 02:32

Ответ: Sigel
 
MoKa, к сожалению у меня нет мака, чтобы можно было под него компилить. Естественно, без доработок не получится взять и просто собрать под другой осью.

щас я качаю образ MacOS, работающий через VMWare 6. Посмотрим что из етого получится )) Литература по разработке OpenGL приложений на MacOS у мну есть (бумажная).

moka 30.01.2009 02:35

Ответ: Sigel
 
HolyDel, это понятно, но я надеюсь ты не будешь упускать весь потенциал OpenGL в области мультиплатформенности? Да и по сути, мне кажется глубже чем инициализация окна, работа с ним, и FullScreen - разница не пойдёт. Как думаешь?

HolyDel 30.01.2009 02:53

Ответ: Sigel
 
думаю еще ввод, инициализация рсширений, подключение либ прийдется менять (bass, physx, lua) все они рабоают под макосью, но, думаю поключение их прийдется менять.

moka 30.01.2009 03:21

Ответ: Sigel
 
Хм, это видно немало работы.. Вопрос, если не сделать импорт сейчас, потом будет геморнее? Просто интерестно, понимаю что возможности нет, но всёже. :)


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

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