AviaSkins.Forums

Вернуться   AviaSkins.Forums > Основные разделы > Моды для Ил-2 > Первым делом, первым делом - самолеты > W.I.P.

Важная информация

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.08.2019, 14:14   #11
Asura
Модератор
 
Аватар для Asura
 
Регистрация: 28.02.2007
Адрес: Тула, Россия
Сообщений: 1,875
По умолчанию

Цитата:
Сообщение от tvister Посмотреть сообщение
Спасибо за подсказку, конечно я обратил внимание на буквы Матs в логе. Думал что reflectPlane, это материал какой то. А оказалось классы. Но ведь исходная модель с этими классами кабины, нормально летает! Как то все это непонятно...
В классе кабин есть такая процедура reflectPlaneMats(). Она нужна для отображения скина при виде из кабины в тех случаях когда части внешки добавлены в сцену кабины. Например у бипланов при виде из кабины видно верхнее крыло. Если в сцене кабины нет этого крыла, то на виде из кабины оно (крыло) будет как бы обрезаться (исчезать). Это связано с тем, что камера кабины обрезает внешку за пределами сферы. Чтобы верхнее крыло все таки отображалось его добавляют в сцену кабины, и мы получаем как бы два крыла - одно на внешке, другое в кабине. При этом при совмещении изображений обрезаний не происходит.

Изменение скина внешки на прямую не отражается на крыле в кабине. Вот чтобы из кабины было видно верхнее крыло в том же скине что внешка применяется данная процедура. Она сопоставляет материал внешки с материалом в кабине.

protected void reflectPlaneMats()
{
HierMesh hiermesh = aircraft().hierMesh();
com.maddox.il2.engine.Mat mat = hiermesh.material(hiermesh.materialFind("Gloss1D0o "));
mesh.materialReplace("Gloss1D0o", mat);
mat = hiermesh.material(hiermesh.materialFind("Gloss1D1o "));
mesh.materialReplace("Gloss1D1o", mat);
mat = hiermesh.material(hiermesh.materialFind("Gloss2D2o "));
mesh.materialReplace("Gloss2D2o", mat);
mat = hiermesh.material(hiermesh.materialFind("Matt1D0o" ));
mesh.materialReplace("Matt1D0o", mat);
mat = hiermesh.material(hiermesh.materialFind("Matt1D1o" ));
mesh.materialReplace("Matt1D1o", mat);
mat = hiermesh.material(hiermesh.materialFind("Matt2D0o" )); - это материал внешки
mesh.materialReplace("Matt2D0o", mat); - это сопоставление с материалом в кабине
}

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

У вас это сопоставление не проходит и вылетает ошибка.
__________________
Их восемь — нас двое. Расклад перед боем
Не наш, но мы будем играть!
Серёжа! Держись, нам не светит с тобою,
Но козыри надо равнять.

© В. Высоцкий
__________________

Asura вне форума   Ответить с цитированием
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 16:10. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Рейтинг@Mail.ru