forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Странный баг рендера (http://forum.boolean.name/showthread.php?t=5610)

Raiter 20.01.2008 01:30

Странный баг рендера
 
Дело обстоит так. Есть модель. Она состоит из 2 мешей и 1 кости. Один из мешей привязан к кости. Гружу модель АнимМешем. Далее нахожу через ФайндЧайлд кость и кручу её. Всё отлично. Но такая модель должна быть не одна. Копирую её через КопиЕнтити. Опять таки каждый раз нахожу кость. Естественно всё занесено в типы. Всё работает. Но! Если на экране появляется больше 1 такой модели, то в некоторых почему-то не отображается меш, привязаный к кости :dontknow: С хендлами всё в порядке. Доказательство тому то, что сначала меш отображается, а потом вдруг пропадает... Попробовал разбить модель на 2 и гузить 2 меши. Аналогичная ситуация.... Кто сталкивался с подобной проблемой? Я впервые такое вижу.

tormoz 20.01.2008 02:56

Ответ: Странный баг рендера
 
Ты паренты не меняешь ?

Halk-DS 20.01.2008 03:28

Ответ: Странный баг рендера
 
А если попробовать поменять на любую другую модель и попробовать ище раз? Может пройдет, может модель какаято некачественная! У меня разок было такое, поменял анимацию и все прошло, но модель у меня пропадала токо если смотреть ей в лиццо! Тоесть EntityYaw(CamP,1) = больше 90 или менше -90, или Pitch также более 90 или менее -90! Просто анимацию я сам делал :-D !!!

Raiter 20.01.2008 03:32

Ответ: Странный баг рендера
 
Цитата:

Ты паренты не меняешь ?
Нет.

Вот код:

Код:

Global EnemyModel = LoadAnimMesh("enemy1_model.b3d") ;
HideEntity EnemyModel

Дальше в ф-ции загружки уровня создаю врагов:
Код:

LevelFile = ReadFile("levels\"+ LevelName$ + "_enemy.RLL")
While Not Eof(LevelFile)
    Enemy = New EnemyType
    Enemy\ID = ReadLine(LevelFile)
    EnType = ReadLine(LevelFile)
    Enemy\EnType = EnType
    Select EnType
        Case 1
              Enemy\Entity = CreatePivot()
          Enemy\Model = CopyEntity(EnemyModel,Enemy\Entity)
          Enemy\Vint = FindChild(EnemyModel,"vint2")
    End Select

    Enemy\XPos =  ReadLine(LevelFile)
    Enemy\YPos =  ReadLine(LevelFile)
    Enemy\ZPos =  ReadLine(LevelFile)

    PositionEntity Enemy\Entity,Enemy\XPos,Enemy\YPos,Enemy\ZPos

Wend
CloseFile LevelFile

В ф-ции обновления врагов:
Код:

TurnEntity Enemy\Vint,0,-15,0
Ну и в цыкле:
Код:

For Enemy = Each EnemyType
    UpdateEnemy(Enemy)
Next


Raiter 20.01.2008 03:41

Ответ: Странный баг рендера
 
Цитата:

А если попробовать поменять на любую другую модель и попробовать ище раз? Может пройдет, может модель какаято некачественная!
Ради эксперимента попробую.

Цитата:

У меня разок было такое, поменял анимацию и все прошло, но модель у меня пропадала токо если смотреть ей в лиццо! Тоесть EntityYaw(CamP,1) = больше 90 или менше -90, или Pitch также более 90 или менее -90! Просто анимацию я сам делал !!!
У меня пропадает, когда на экране появляется вторая модель...

Raiter 20.01.2008 03:52

Ответ: Странный баг рендера
 
Итак я нашёл где собака зарыта...

Сделал в Максе "модель" (Halk-DS ;)) (2 бокса и кость) и вставил в игру. Всё заработало.

И тут мне в голову пришла 1 мысль. В модельке к мешу, который привязан к кости я применял альфу (накладывал Блицовский материал с альфой в 60%). Проделываю тоже самое с боксом, экспортирую, запускаю... И вот тебе! Вылазит тот же баг.

Открываю нормальную модель, убираю альфу, экспортирую - бага нет.

Ок. Пробую назначить альфу в блице:
Код:

EntityAlpha FindChild(Enemy\Model,"vint"),0.3
Опять баг.
Значит поблема в альфе. Странно...

moka 20.01.2008 09:37

Ответ: Странный баг рендера
 
С фильтровкой было постоянно много проблем, в 1.99 вроде как стало немного лучше. Но относительно CopyEntity, учитывай что он не создаёт дубликат модельки, а только делает дополнительный рендер, со своей матрицей трансформации и брашем.

tormoz 20.01.2008 13:53

Ответ: Странный баг рендера
 
Код:

Enemy\Model = CopyEntity(EnemyModel,Enemy\Entity)
Enemy\Vint = FindChild(EnemyModel,"vint2")

поменяй на:
Код:

Enemy\Model = CopyEntity(EnemyModel)
Enemy\Vint = FindChild(Enemy\Model,"vint2")
EntityParent Enemy\Model,Enemy\Entity


Raiter 20.01.2008 14:44

Ответ: Странный баг рендера
 
tormoz, безрезультатно. Всеравно вылазит баг. Ну да ладно. Без альфы смогу как нибуть :)

HolyDel 20.01.2008 15:44

Ответ: Странный баг рендера
 
попробуй назначить вертолету альфу 0.999

Raiter 20.01.2008 15:51

Ответ: Странный баг рендера
 
Цитата:

попробуй назначить вертолету альфу 0.999
Не помогает. Придётся "забить" на альфу :)

H@NON 20.01.2008 16:47

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

Raiter 20.01.2008 16:52

Ответ: Странный баг рендера
 
Знаешь спрайт и меш - вещи разные. Спрайт имхо выглядит похуже чем лопасти сделанные полигонально :) Да и спрайт тут не прокатит имхо. Тут нужно меш в виде круга + тестура с маской.
Но посмотрим. Тем более, что так можно будет секономить немного полигонов.

ЗЫЖ Чаво ты меня за полного нупа держиш то? :''((

Taugeshtu 20.01.2008 17:47

Ответ: Странный баг рендера
 
Цитата:

Меш в виде круга
эмм, я немного туповат, или такая конструкция гораздо расточительнее в плане полигонов, нежели биллборд с (маск/альфа)-текстурой?

HolyDel 20.01.2008 18:12

Ответ: Странный баг рендера
 
эмм, я немного туповат, или такая конструкция имеет хоть какое нибудь приемущество перед квадом с размытой текстурой винта?

Raiter 20.01.2008 18:12

Ответ: Странный баг рендера
 
46 треугольников :)

эмм, я немного туповат или просто ступил :-)

Спрайт конечно лучше.

IGR 20.01.2008 18:17

Ответ: Странный баг рендера
 
Райтер, а если не CopyEntity, а заново загрузить, то така я же проблема ??

moka 21.01.2008 16:27

Ответ: Странный баг рендера
 
IGR, то что память будет неоправданно забиваться.
Гы, поржал с постов #14-16 :lol:

IGR 22.01.2008 12:30

Ответ: Странный баг рендера
 
Цитата:

IGR, то что память будет неоправданно забиваться.
я допер !! :)

HolyDel 22.01.2008 12:36

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

stone_evil 22.01.2008 12:54

Re: Странный баг рендера
 
Да, в альфе дело, скорее всего, я тоже сталкивался с такой проблемой, когда дровосеков делали. Как решить - фиг знает. Но факт в том, что при определенном угле отображения "альфованные" модели не прорисовываются.

HolyDel 22.01.2008 13:04

Ответ: Странный баг рендера
 
Цитата:

Но факт в том, что при определенном угле отображения "альфованные" модели не прорисовываются.
mipmap шайтан?

IGR 22.01.2008 14:45

Ответ: Странный баг рендера
 
Цитата:

не забывайте что два загруженых меща - это разные меши, даже если они одинаковые, возиожно применяется сортировка по мешам, и если рисуются нескололько одинаковых мешей подряд, то буффера (индексный/вершинный) не меняются, что может немного повысить производительность.
Holy, ты хош сказать что скопированый и зановозагруженный меши почти то самое (если эта сортировка все-же применяется) ??

HolyDel 22.01.2008 14:56

Ответ: Странный баг рендера
 
CopyEntity это не CopyMesh.
ентити - ето просто матрица трансформации, имя, браш, ну еще кое какие настройки отображения.
меш - это сетка (тут хранятся данные о вертексах, о индексах).

да. скопированный МЕШ и зановозагруженный это почти одно и то же (может текса остается одна на скопированном и копируется при заново загруженном)

stone_evil 22.01.2008 15:41

Re: Ответ: Странный баг рендера
 
Цитата:

Сообщение от HolyDel (Сообщение 75315)
mipmap шайтан?

Я, честно говоря, не знаю таких умных слов, но то, что шайтан, это точно :-D

IGR 22.01.2008 16:56

Ответ: Странный баг рендера
 
Holy, спасибо за разяснение !! :super:
но все же некоторых аспектов я не понял !! :(
вот мы грузим МЕШ (mesh = loadmesh("xxx")
но используется он у нас как полноценный entity !!
это меня вводит в глубокое заблуждение !! вот и немогу понять в чем разница (практическая) !!
теоритическую разницу, то ты мне уже обьяснил !! :super:

PS: сорр за оффтоп !!

HolyDel 22.01.2008 17:11

Ответ: Странный баг рендера
 
меня это тоже вводит в заблуждение. но не я это придумал а марк.
просто когда мы грузим меш у нас автоматом создается ентити.

я ошибся в предыдущем посте
не
Цитата:

ентити - ето просто матрица трансформации, имя, браш, ну еще кое какие настройки отображения.
а
Цитата:

ентити - ето просто матрица трансформации, имя, браш, ну еще кое какие настройки отображения + ссылка на реальный объект (сетку, свет, камеру, плейн, террайн, спрайт)
так вот, когда объект один и тот же, то ничего, кроме матрици трансформации менять ненадо, когда другой... то надо все менять.

IGR 22.01.2008 17:21

Ответ: Странный баг рендера
 
ну теперь проясняется !!
вот камера у нас типо entity, там ни матрицы, ни брашев, ни еще кое-чего нету же !! :)

HolyDel 22.01.2008 17:31

Ответ: Странный баг рендера
 
как это ни матрицы?
ты позицию, поворот камере можешь задать? можешь. значит и матрица есть.

IGR 22.01.2008 17:48

Ответ: Странный баг рендера
 
ой !! я хотел сказать вертексную сетку !! :(

moka 23.01.2008 01:58

Ответ: Странный баг рендера
 
Крч, у тебя есть коробки, их можно двигать, крутить и менять их размер, а то что лежит внутри - это другое.
Там может быть камера, может быть сетка, ещё и с брашем, спрайт, террайн и т.д. и т.п.

IGR 23.01.2008 14:40

Ответ: Странный баг рендера
 
МоКа, а если в коробке ниче нет, то это Pivot !! :-)

HolyDel 23.01.2008 14:41

Ответ: Странный баг рендера
 
Совершенно верно.
еще можно сказать что эти коробки можно привязывать друг к другу.

moka 23.01.2008 14:45

Ответ: Странный баг рендера
 
Скотчем :lol:
А Браш, это с условием что в коробке мешь (хз как со спрайтами, но там вроди как тоже юзаются браши?), то тогда коробку можно разукрасить наклейками, блендами и альфами - Браш (материал).

Alex_Noc 26.06.2008 10:27

Ответ: Странный баг рендера
 
Ребятки вы здесь нафлудили аж 3 страницы :) - вобщем решение этого бага такое:
В максе делаем любую модельку (даж 1 треугльник сойдет) - потом вешаем скин на эту модельку(чтобы точнее проанимировать кость линкуем в максе модель к кости),анимируем , далее экспортим в блиц , ищем сначала тот треугольник , потом кость , потом модельки которые должны анимироваться как кость например. Ну и парентим те меши которые "пропадали" к кости. У меня баг решился. Теперь разьясню собственно в чем вообще баг. Вобщем баг в том что когда кость обьекта пропадает из видимости камеры - обьект скрываеться :)(стандартная авто функция блица скрывать все че не видно ;) . Все !
Ну и от себя добавлю :) - что бдительный моделер модет выявить множество решений многих вопросов! Так что нужно быть еще и чуток моделлером :) Чтоб выявлять подобные баги.

tormoz 26.06.2008 14:53

Ответ: Странный баг рендера
 
Черезжопное решение

Есть волшебная команда
MeshCullBox mesh,x#,y#,z#,width#,height#,depth#

HolyDel 26.06.2008 16:25

Ответ: Странный баг рендера
 
tormoz а что она делает? задает бокс фрустум отсечения чтоли? а если я хочу сферу?

Alex_Noc 27.06.2008 01:50

Ответ: Странный баг рендера
 
Ну уж :) извращаемся как можем :) лишь бы баг победить. ;) Да - я чет такой команды незнаю :( ее в справке нету :( - что она делает - желаетлно с примером. Заранее благодарен

tormoz 27.06.2008 02:02

Ответ: Странный баг рендера
 
Тока бокс
Задает куб "видимости" объекта
Создана специально для таких случаев.
параметры: хендл объекта,хуz - центр куба и ширина. высота длина куба
Кстати такой "баг" - это и не баг вовсе.
Не скейлите кости и пивоты на модели, или перед экспортом применяйте резет Хформ ко всем объектам сцены - и никакого "бага" не будет
Это нормальная реакция движка на неправильную модель.

Alex_Noc 27.06.2008 12:03

Ответ: Странный баг рендера
 
Уважаемый томоз :) ОГРОМНОЕ СПАСИБИЩЕ ! Баг пропал :) - ну и делать терь можно по старому :) - где ж ты был все это время :) - я такую команду даже в инете струдом нашел :)

Alex_Noc 20.08.2008 11:45

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

H@NON 20.08.2008 12:01

Ответ: Странный баг рендера
 
куллБокс тут как бы вообще не должен быть при делах, пики, так же как и коллизии могут реагировать либо на EntityBox, либо на EntityRadius, или по-полигонно.

HolyDel 20.08.2008 12:06

Ответ: Странный баг рендера
 
H@NON прав. Раз ты применяеш бокс отсечения, то применяй и бокс пика.

Alex_Noc 21.08.2008 22:18

Ответ: Странный баг рендера
 
Дак вот в том то и дело что мне нужны пики по полигонам - а когда юзаешь кулбокс - то даже если стоит пик полигональный - то все равно после кулбокса пик работает как бокс :( - а мне надо прям конкретно - по ПОЛИГОНАМ

tormoz 21.08.2008 22:38

Ответ: Странный баг рендера
 
Цитата:

Сообщение от Alex_Noc (Сообщение 84879)
Дак вот в том то и дело что мне нужны пики по полигонам - а когда юзаешь кулбокс - то даже если стоит пик полигональный - то все равно после кулбокса пик работает как бокс :( - а мне надо прям конкретно - по ПОЛИГОНАМ

Ерунда
где то ты просто накосячил в коде

Alex_Noc 24.08.2008 13:24

Ответ: Странный баг рендера
 
нет - не накосячил :( - это так. Проверьте сами.

tormoz 24.08.2008 18:16

Ответ: Странный баг рендера
 
Проверил. все работает отлично

Alex_Noc 25.08.2008 13:13

Ответ: Странный баг рендера
 
ну тагды незнаю :(


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

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