Тема: Mitsubishi Ki-30
Показать сообщение отдельно
Старый 30.08.2019, 14:14   #21
Asura
Модератор
 
Аватар для Asura
 
Регистрация: 28.02.2007
Адрес: Тула, Россия
Сообщений: 1,807
По умолчанию

Цитата:
Сообщение от 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 вне форума   Ответить с цитированием