forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Тени в Xors3d (http://forum.boolean.name/showthread.php?t=11700)

Amatsu 11.02.2011 16:44

Ответ: Тени в Xors3d
 
Пока сидел на работе - понял почему тени глючат. В этих местах на руках у модели при создании карты текстуры полигоны "смяты", то есть не растянуты. Видимо тени накладываются прямо по текстурной сетке модели, если где-то текстура криво наложена - там и тень будет кривая. В общем будут перетекстурировать. По этой теме сразу вопрос - есть какие-нить простые программы для создания автоматической текстурной выкройки модели (3D Max не особо хочется ставить ради этого, бо я привык к другим программным продуктам, хотелось бы чего-нить небольшое и относительно узкоспециализированное).

По поводу анимации - экспортил из Милки, я в ней всю анимацию привык делать. Там стоит 29 кадров, если ты об этом. Менять скорость при экспорте нельзя. В оригинальном блице никаких подтормаживаний, менял скорость как угодно - всегда плавно моделька двигалась. Проблема возникла только на ксорсе.

Я про то, чтобы не было как в блитце: если фпс много - все персонажи носятся по уровню как торпеды, если фпс мало - все происходящее на экране будто в киселе. В блитце приходилось фиксировать фпс, делать таймеры и через CaptureWorld и цикл вручную выравнивать скорость игры - получалось что при большом или низком фпс игра продолжала идти с нужной скорость.

Knightmare 11.02.2011 16:47

Ответ: Тени в Xors3d
 
Тени от текстурной развертки модели почти никак не зависят. Исключая маски текстур.
Милкшейп - неадекватное говно, надо ковырять модель и смотреть чего оно там натворило.
По FPS - ну я же говорю, твиннинг есть как в блитзе, ну и по ссыле погляди.

Amatsu 11.02.2011 17:03

Ответ: Тени в Xors3d
 
Если бы был другой такой простой редактор костной анимации как милка... Пробовал анимировать в максе - не могу привыкнуть к его управлению и громоздкости

Amatsu 11.02.2011 23:10

Ответ: Тени в Xors3d
 
Кстати, решил ваш пример с анимацией проверить, где кузнецу можно шею сворачивать. Замедлил анимацию - те же подергивания времени от времени, будто фпс проседают на секунду через пять.
з.ы. разрешение экрана 1680х1050, видеокарта Radeon HD4770, драйверы самые последние.
з.з.ы. заметил - если запускать в окне и без вертикальной синхры - все норм.

.Squid 11.02.2011 23:33

Ответ: Тени в Xors3d
 
Да. Такое вполне возможно, если ФПС слишком высок. Парадоксально и смешно, да хД? Тут в моем последнем посте (там, где о "choppy animation") подробнее о причине этого явления и том, как его избежать http://area.xors3d.com/forums/tracker.php?p=1&t=66
В кратце: для синхронизации анимации используется таймер с точностью 1мс, т.к. в реальной более-менее серьезной 3д игре в ближайшие лет 5 скорость обновления одного кадра вряд ли будет меньше 1мс. В мелких тестах кадр как раз обновляется меньше, чем за 1 мс. Поэтому этот таймер в основном возвращает 0мс и лишь иногда иное значение. При нулевом значении анимация просто не проигрывается. Поэтому получается так: анимация - плюем в потолок - плюем в потолок - плюем в потолок - анимация - плюем в потолок - плюем в потолок - плюем в потолок... Из-за этого анимация дергается.
Решение - ограничивать ФПС хотя бы на уровне 500.

Amatsu 11.02.2011 23:35

Ответ: Тени в Xors3d
 
Благодарю, приблизительно о такой синхронизации я и спрашивал, просто не знал как правильно описать :)
Мда, облом:
"You do not have the permission to view the tracker. If you believe this is an error please contact the board administrator." (с)
Нельзя ли вынести сюда это решение, желательно в форме примерного кода?

.Squid 11.02.2011 23:45

Ответ: Тени в Xors3d
 
Схема ограничения частоты обновления такая:
Код:

Const FPS%    = 60
Global period# = 1000 / FPS
Global time%  = MilliSecs() - period
Global Ticks#, elapsed%
While AppRunning()
        nFPS_Int = xGetFPS()
        Repeat
                elapsed = MilliSecs() - time
        Until elapsed
        Ticks = elapsed / period

        For k% = 1 To Ticks
                time = time + period
                GameLogicUpdate() ; тут обновляется вся логика
                xUpdateWorld()      ; тут надо пробовать. Возможно стоит вынести за пределы ограничивающего цикла
        Next
       
        xRenderWorld()
        xFlip()
Wend
End

Вообще подобного кода на оффсайте блитца завались. Правда некоторый может глючить. Не особо разбирался в причинах.

Можно еще твиннинг вкрутить, для того чтобы анимация оставалась плавной при низкой частоте обновления логики.

Но во всяких демках с большим ФПС проблема все равно останется, потому что xRenderWorld() все равно каждый кадр вызывается. Тогда его или в ограничивающий цикл надо засунуть, что перечеркнет весь смысл твиннинга. Или просто delay(2) вставить.

.Squid 11.02.2011 23:46

Ответ: Тени в Xors3d
 
Цитата:

Сообщение от Amatsu (Сообщение 178657)
Мда, облом:
"You do not have the permission to view the tracker. If you believe this is an error please contact the board administrator." (с)
Нельзя ли вынести сюда это решение, желательно в форме примерного кода?

В твоем случае просто вставить Delay(2) в начале главного цикла. А лучше Delay(16) хД.

Amatsu 18.02.2011 22:56

Ответ: Тени в Xors3d
 
Заметил небольшой косяк теней (хотя конечно возможно это косяк b3d-модели, но все же) - если анимируемая модель состоит из нескольких сурфейсов, и один из сурфейсов оказывается вне зоны видимости камеры - его тень замирает, будто останавливается анимация. В то время как остальная модель продолжает двигаться и отбрасывать адекватную тень. Возможно это даже не глюк системы теней, возможно что это сурфейс на самом деле, выпадая из поля зрения камеры прекращает анимироваться. Мой ли это косяк, и если нет - как обойти?
http://images.tvlg.ru/images/15441547220595234869.jpg
з.ы. и есть ли в ксорсе какой-то аналог MeshCullBox? Возможно расширение кулбокса модели помогло бы
з.з.ы. я чувствую скоро меня все будут посылать к черту, бо беспокою по малейшему поводу %D Заранее прошу прощение за свою тупость, если она всему виной

Knightmare 18.02.2011 23:00

Ответ: Тени в Xors3d
 
Да, для невидимых сюрфей1сов пропускается скиннинг. Возможно стоит впилить флаг который насильно анимирует их когда это необходимо.

Amatsu 18.02.2011 23:01

Ответ: Тени в Xors3d
 
Цитата:

Сообщение от Knightmare (Сообщение 179426)
Да, для невидимых сюрфей1сов пропускается скиннинг. Возможно стоит впилить флаг который насильно анимирует их когда это необходимо.

Этот флаг впиливается в конвертере, например пайплайне, или какой-то командой в ксорсе? Если второе - пойду гуглить

Knightmare 18.02.2011 23:02

Ответ: Тени в Xors3d
 
Я говорил о впиливании его в движок.

Amatsu 18.02.2011 23:03

Ответ: Тени в Xors3d
 
Ок, тогда буду ждать апдейта :)

Amatsu 28.02.2011 01:28

Ответ: Тени в Xors3d
 
Скачал февральскую ревизию. Не нашел чего хотел. Можно поинтересоваться, появится ли в ближайшее время фикс для команды анимации, чтобы анимация сурфейсов (пардон) за пределами камеры не прекращалась? Или хотя бы подскажите, как эту проблему решить существующими средствами. Заранее благодарен

И да, еще интересный момент заметил. У меня после обновления теперь при прописывании команды xPhysicsDebugRender 1 скомпилированное приложение молча моментально закрывается. Но тут еще посмотрю, может мой косяк где. Хотя со старой ревизией работало норм

Amatsu 10.03.2011 22:38

Ответ: Тени в Xors3d
 
Скажите плиз, вообще реально использовать тени ксорса при ортографическом рендере камеры? Потому что если использовать их с дефолтными настройками в этом режиме их нехило так колбасит


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

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