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

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


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

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