Просмотр полной версии : Разница в расположении объектов, смоделированных в 3ds max, в игре
Здравствуйте! Помогите разобраться с такой проблемой:
- в 3ds max создаю куб - пусть это будет основной элемент (без анимации)
- создаю точку привязки (Point) и располагаю её в на одной грани по центру, называю "a.ruchka":
http://i45.fastpic.ru/thumb/2012/1022/99/ab0e9013370604d45797f8d6f8def099.jpeg (http://fastpic.ru/view/45/2012/1022/ab0e9013370604d45797f8d6f8def099.jpg.html)
- линкую точку привязки к кубу
- экспортирую в im-файл
Далее:
- создаю цилиндр (ручку)
- создаю объект Dummy
- именую Dummy как "b.r.main" и линкую к нему цилиндр
- настраиваю анимацию Dummy
http://i45.fastpic.ru/thumb/2012/1022/fa/90c66e0d9a649e377610d3daccd7b0fa.jpeg (http://fastpic.ru/view/45/2012/1022/90c66e0d9a649e377610d3daccd7b0fa.jpg.html)
- экспортирую в другой im-файл объекты Dummy и цилиндр (уже с анимацией)
Далее:
- прописываю всю необходимую информацию в конфиг, в частности:
att-parent "default"
att "a.ruchka"
Да, уточняю, что импортирую в игру в качестве интерьера (так нужно)
- открываю в игре и вижу:
http://i45.fastpic.ru/thumb/2012/1022/bd/27116142ad82ab172e0631aa5746f0bd.jpeg (http://fastpic.ru/view/45/2012/1022/27116142ad82ab172e0631aa5746f0bd.jpg.html)
Вопрос 1: анимация работает, всё как нужно, только почему расположение цилиндра отличается от указанного в процессе моделирования?
Вопрос 2: цвет текстуры - белый. Почему игра некорректно отображает цвет? Можно ли это как-то исправить?
- линкую точку привязки к кубузачем? Это не нужно.
- экспортирую в другой im-файл объекты Dummy и цилиндр (уже с анимацией)тут лучше по-другому делать.
1) у меши с анимацией должна быть хотя бы одна неподвижная деталь, которая линкуется к b.r.main, а сама b.r.main при этом неанимирована
2) для цилиндра должна быть своя анимированная дамми. Причём при линковке следует соблюдать порядок - сначала детали к своим дамми, потом дамми к дамми вниз по иерархии
3) в 0 кадре анимации все дамми должны иметь повороты 0,0,0 в глобальных координатах. Иначе анимация разваливается.
только почему расположение цилиндра отличается от указанного в процессе моделирования?а у тебя цилиндр располагается точно в точке 0,0,0 ? Ты ж не забывай, что к точке привязки цепляется центр сцены а не центр цилиндра
Почему игра некорректно отображает цвет?попробуй поиграться с настройками освещения - http://www.trainsim.ru/forum/showthread.php?t=7725 (в 12 трейнзе пункт edit environment в main menu)
зачем? Это не нужно.
а у тебя цилиндр располагается точно в точке 0,0,0 ? Ты ж не забывай, что к точке привязки цепляется центр сцены а не центр цилиндра
А, наверное в этом и была проблема. То есть, если я правильно понимаю, тут принцип немного отличается, чем моделирование для МСТС: выходит, что все детали, которые будут анимированы не нужно вообще включать в сцену и моделировать их с центром осей, равным центру сцены.
А если всё-таки центр осей объекта сделать не равным 0, а вот Pivot Point переместить в центр сцены? Так можно?
попробуй поиграться с настройками освещения - http://www.trainsim.ru/forum/showthread.php?t=7725 (в 12 трейнзе пункт edit environment в main menu)
Попробовал, но только особых изменений на цвете по идее белого куба я не заметил:
http://i45.fastpic.ru/thumb/2012/1022/32/ed38c72467a97116548e0e1e9ffa4732.jpeg (http://fastpic.ru/view/45/2012/1022/ed38c72467a97116548e0e1e9ffa4732.jpg.html)
Отсюда вывод - даже если подготовить качественный и реалистичный по цвету текстурный материал для модели интерьера, то игра в конечном счёте отобразить его ужасно.
Не пойму, почему в случае с кузовом вагона или интерьером кабины иностранного локомотива цвета действително светлые, ну, может быть и слишком светлые, но всё же, визуально далеко от моего "белого" куба?
http://i45.fastpic.ru/thumb/2012/1022/f9/24679325301b0b08008068d9d99736f9.jpeg (http://fastpic.ru/view/45/2012/1022/24679325301b0b08008068d9d99736f9.jpg.html)
Отсюда вывод - даже если подготовить качественный и реалистичный по цвету текстурный материал для модели интерьераможешь попробовать поставить ambient белым а self-illumination 100 .
Подробнее есть в моей статье "материалы в trainz" - http://model.trainzup.com/?p=412
Отсюда вывод - даже если подготовить качественный и реалистичный по цвету текстурный материал для модели интерьера, то игра в конечном счёте отобразить его ужасно.можешь попробовать в расчёте скрипта освещённости поставить 100% освещение - может что-то поменяется.
Вообще, говоря о цветопередаче исходной текстуры, в trainz она будет только на "нормально освещённых солнцем поверхностях" когда яркость рассеянного и направленного освещений выкручена на максимум. То есть в среднем текстура будет затемнённой от оригинала примерно в 2 раза. Кабины это не касается.
Добавлено через 10 минут
выходит, что все детали, которые будут анимированы не нужно вообще включать в сцену и моделировать их с центром осей, равным центру сцены.не совсем так...
Если ты хочешь анимировать детали сцены - пожалуйста, анимацию назначать для дамми а не для объектов. Если ты хочешь сделать отдельную анимированную детальку - тоже пожалуйста, но будь добр, снабди её каким-то неанимированным объектом, чтоб к этому объекту можно было прилинковать главный (неанимирванный) дамми.
а вот Pivot Point переместить в центр сцены?вообще то что ты тут сделал в МСТС называется freight anim'ом или как-то так. Координаты Pivot Point'а определяют куда будет помещён центр сцены с деталью.
При экспорте детали выделять не надо. А ты выделил и видимо поэтому сделал не так как надо.
Вообще, говоря о цветопередаче исходной текстуры, в trainz она будет только на "нормально освещённых солнцем поверхностях" когда яркость рассеянного и направленного освещений выкручена на максимум. То есть в среднем текстура будет затемнённой от оригинала примерно в 2 раза. Кабины это не касается.
То есть получается, что эта "голубизна" - это специфической цветовой эффект, генерируемый trainz как отражение окружающей среды (неба) и полностью от него не избавиться.
Как по мне, это большая недоработка разработчиков игры. Раз уж они дают возможность самому разработчику программировать уровень освещенности и многие другие вещи, то уж давайте возможность настроить цвет (а нужен ли он вообще при наличии качественного текстурирования, запекания и т.п.? Сомневаюсь).
вообще то что ты тут сделал в МСТС называется freight anim'ом или как-то так.
Да нет, то, что я делал для МСТС не являлось фрейт-анимом, это была отдельная модель, которая загружалась при включении вида из интерьера.
При экспорте детали выделять не надо. А ты выделил и видимо поэтому сделал не так как надо.
А мне кажется, что так можно, выделяем нужный объект (объекты), нажимаем Export selected и всё в порядке.
Раз уж они дают возможность самому разработчику программировать уровень освещенности и многие другие вещи, то уж давайте возможность настроить цветесть возможность настраивать цвет, а именно цвет самосвечения текстуры. Задаётся функцией public native void SetTextureSelfIllumination(string texture, float r, float g, float b) где texture - имя *.texture.txt файла, r g b - соответственно цвета, от 0 до 1 (например 0.4,0.4,0)
но вообще, как я уже говорил, глобальная функция регулирования яркости всех текстур в кабине - SetCabLightIntensity(float intensity)
А мне кажется, что так можно, выделяем нужный объект (объекты), нажимаем Export selected и всё в порядке.лучше снимать выделение и экспортировать всю сцену. Так как ты и так должен знать что чем меньше мешей тем быстрее их обработать.
это была отдельная модельэто было 2 отельных модели, причём вторая подключалась к первой наподобие фрейт-анима. Да, они обе включаются в виде из интерьера.
Добавлено через 16 минут
это специфической цветовой эффект, генерируемый trainz как отражение окружающей среды (неба) и полностью от него не избавитьсяне факт что небо тут как-то влияет. Ещё раз - ты пробовал играться вот тут -
http://s019.radikal.ru/i622/1210/04/7f2553b29320t.jpg (http://s019.radikal.ru/i622/1210/04/7f2553b29320.jpg)
http://s47.radikal.ru/i116/1210/f9/f5e71effb48bt.jpg (http://s47.radikal.ru/i116/1210/f9/f5e71effb48b.jpg)
? (при этом надо перезаписывать карту)
Ну вот например от такого скрипта
include "defaultlocomotivecabin.gs"
class extracabin isclass DefaultLocomotiveCabin
{
public void Attach(GameObject obj)
{
inherited(obj);
SetTextureSelfIllumination("254", 0.1, 0.1, 0);
SetTextureSelfIllumination("254_2", 0.1, 0.1, 0);
SetTextureSelfIllumination("395", 0.1, 0.1, 0);
SetTextureSelfIllumination("alsn_skin", 0.1, 0.1, 0);
SetTextureSelfIllumination("body", 0.1, 0.1, 0);
SetTextureSelfIllumination("dvery", 0.1, 0.1, 0);
SetTextureSelfIllumination("krisa", 0.1, 0.1, 0);
SetTextureSelfIllumination("linz-alsn-linz-alsn", 0.1, 0.1, 0);
SetTextureSelfIllumination("manometers-manometers_alpha", 0.1, 0.1, 0);
SetTextureSelfIllumination("obshivka", 0.1, 0.1, 0);
SetTextureSelfIllumination("polocotnik", 0.1, 0.1, 0);
SetTextureSelfIllumination("pult", 0.1, 0.1, 0);
SetTextureSelfIllumination("rubber", 0.1, 0.1, 0);
SetTextureSelfIllumination("manometers-manometers_alpha", 0.1, 0.1, 0);
SetTextureSelfIllumination("texture", 0.1, 0.1, 0);
SetTextureSelfIllumination("texture1", 0.1, 0.1, 0);
SetTextureSelfIllumination("texture2", 0.1, 0.1, 0);
SetTextureSelfIllumination("texture3", 0.1, 0.1, 0);
SetTextureSelfIllumination("texture4", 0.1, 0.1, 0);
SetTextureSelfIllumination("torec", 0.1, 0.1, 0);
SetTextureSelfIllumination("trubi_254", 0.1, 0.1, 0);
SetTextureSelfIllumination("texture", 0.1, 0.1, 0);
SetTextureSelfIllumination("yellow", 0.1, 0.1, 0);
}
};
отображение меняется с
http://s019.radikal.ru/i620/1210/87/1d222b44819dt.jpg (http://s019.radikal.ru/i620/1210/87/1d222b44819d.jpg)
на
http://s45.radikal.ru/i107/1210/d6/79f6e84957e5t.jpg (http://s45.radikal.ru/i107/1210/d6/79f6e84957e5.jpg)
TRam_, спасибо, что помогаешь разобраться!
Я тоже экспериментирую и пришёл к таким результатам:
Пробовал поиграть с параметром Self-Illumination, выставил в 20 единиц, получается так:
- днем:
http://i44.fastpic.ru/thumb/2012/1023/7e/fccc8cdbda8120fe23ec5f37a0ad547e.jpeg (http://fastpic.ru/view/44/2012/1023/fccc8cdbda8120fe23ec5f37a0ad547e.jpg.html)
- и ночью:
http://i44.fastpic.ru/thumb/2012/1023/1a/f319b94f2ed8dcdbd5f206e3edce781a.jpeg (http://fastpic.ru/view/44/2012/1023/f319b94f2ed8dcdbd5f206e3edce781a.jpg.html)
Также пробовал менять настройки Environment:
http://i44.fastpic.ru/thumb/2012/1023/b6/73de1023165c5976699692618d656fb6.jpeg (http://fastpic.ru/view/44/2012/1023/73de1023165c5976699692618d656fb6.jpg.html)
но это практически ничего не изменило, хотя это не вариант решения задачи, т.к. пришлось бы редактировать каждый маршрут.
Ну вот например от такого скрипта
Странно, что RGB указывается как 0.0, 0.0, 0. Но это же черный цвет? Белый ведь 255,255,255?
Ну да ладно. Смотрю результат:
- днём
http://i44.fastpic.ru/thumb/2012/1023/09/692eda3ee643f4b3a94ffdf116e8ff09.jpeg (http://fastpic.ru/view/44/2012/1023/692eda3ee643f4b3a94ffdf116e8ff09.jpg.html)
Да, действительно, то, что и ожидалось...
- и ночью
http://i44.fastpic.ru/thumb/2012/1023/7b/207c45a03c0a0ee265b36a805e041c7b.jpeg (http://fastpic.ru/view/44/2012/1023/207c45a03c0a0ee265b36a805e041c7b.jpg.html)
... ну.., мягко говоря, результаты не превзошли ожидания...
Вспомнил, что в настройках маршрута редактировал окружающую среду и делал цвет Солнца теплых тонов, вернулся, смсенил на белый, но "ночной результат" тот же.
Тут задача и чтобы искажения голубюизной не было, но и возможность корректной реакции на изменение времени суток.
Добавлено через 16 минут
public void Attach(GameObject obj)
Если Update вызывается с каждым кадром, то как дела обстоят с Attach? Если правильно понял из справки, вызов происходит при подключении вида из кабины, то есть когда мы нажимаем клавишу 1. Верно?
но это практически ничего не изменилона том скрине который ты показал ты крутил только цвет воды.
Добавлено через 4 минуты
Странно, что RGB указывается как 0.0, 0.0, 0. Но это же черный цвет? Белый ведь 255,255,255?это аддитивная прибавка к цвету, нормиованная на 255.
То есть 0 - это нулевая прибавка к освещённости, 0.1 - это прибавка на 25 (ну то есть 10% от 255).
- и ночьюпокажи весь текст скрипта. Потому что если ты делал
SetCabLightIntensity(intensity)
то при коррекции цвета текстуры надо использовать
SetTextureSelfIllumination("alsn_skin", 0.1*intensity, 0.1*intensity, 0);
и т.п. Естественно это надо всовывать в Update.
Если правильно понял из справки, вызов происходит при подключении вида из кабины, то есть когда мы нажимаем клавишу 1. Верно?почти. Это когда ты залазишь на этот локомотив. Не обязательно в вид 1. Кабина при этом да, не рендерится, но её объект создаётся.
покажи весь текст скрипта.
Написал так:
//---------------------------------------------------------
public void Attach(GameObject obj)
{
inherited(obj);
SetTextureSelfIllumination("pribor", 0.1, 0.1, 0);
SetTextureSelfIllumination("tex", 0.1, 0.1, 0);
}
//---------------------------------------------------------
public void Update()
{
inherited();
i++;
if(i>30)
{
i=0;
float Lightness = Math.Fmax(0.02,Math.Fabs(World.GetGameTime() - 0.5f)*Math.Fabs(World.GetGameTime() - 0.5f) * 6.0f);
Lightness = Math.Fmin(0.99,Lightness);
SetTextureSelfIllumination("pribor", 0.1*Lightness, 0.1*Lightness, 0);
SetTextureSelfIllumination("tex", 0.1*Lightness, 0.1*Lightness, 0);
SetCabLightIntensity(Lightness);
}
}
//---------------------------------------------------------
Так правильно?
Результаты:
- 12:00:
http://i44.fastpic.ru/thumb/2012/1024/40/78e17e225c5625d54a69d449780b6f40.jpeg (http://fastpic.ru/view/44/2012/1024/78e17e225c5625d54a69d449780b6f40.jpg.html)
- 23:00:
http://i44.fastpic.ru/thumb/2012/1024/f8/3527a69d1e6feccb4edc2260162481f8.jpeg (http://fastpic.ru/view/44/2012/1024/3527a69d1e6feccb4edc2260162481f8.jpg.html)
Ну вот, это уже другое дело. Как думаешь, для ночной освещенности - это не слишком? Хотя, исходя из того, что, если, к примеру, в 22:00 освещенность ещё нормальная, её можно оставить такой, не изменяя вплоть до 03:00, прописав условие в Update.
Ещё вопрос: насколько сказывается на ресурсах такое цикличное (1 р./30 кадров) обновление освещённости и светимости текстур? Или это нормально, т.к. для освещенности уличных объектов, находящихся под открытым Солнцем игра использует этот же метод?
P.S. Ну, вот, и кто бы знал, что именно так нужно корректировать освещённость, чтобы избавиться от примитивной "голубизны"?
Да, ещё ты говорил, что на этапе моделирования лучше экспортировать все объекты, а не отдельно основной, отдельными деталями элементы. А почему тогда в виде из купейного вагона, вложенного на trainzup, двери, окна - это отдельные элементы? В чём суть?
А почему тогда в виде из купейного вагона, вложенного на trainzup, двери, окна - это отдельные элементы? В чём суть?
Например двери, окна и лесенки на верхнюю полку сделаны в виде "анимированных рычагов", и чтобы работали независимо друг от друга разбиты на отдельные меши. Кроме того их по 2 набора с разными текстурами (один набор для выключенного освещения другой для включенного). И меши этих наборов ещё и синхронизируются скриптом...
насколько сказывается на ресурсах такое цикличное (1 р./30 кадров) обновление освещённости и светимости текстур?можешь поставить раз в 20 реже - всё равно скачков яркости не будет. Так как Update вызывается только на том вагоне на котором сидишь, много ресурсов это есть не будет вне зависимости от того сколько ты вагонов расставишь.
Ну, вот, и кто бы знал, что именно так нужно корректировать освещённость, чтобы избавиться от примитивной "голубизны"?моделлеры сами исправляли это фотошопом, скриптёрам не сообщали :) .
Добавлено через 46 минут
Как думаешь, для ночной освещенности - это не слишком?
вот тут у тебя её расчёт.
float Lightness = Math.Fmax(0.02,Math.Fabs(World.GetGameTime() - 0.5f)*Math.Fabs(World.GetGameTime() - 0.5f) * 6.0f);
Lightness = Math.Fmin(0.99,Lightness);
всегда есть возможность придумать свою формулу, если считать что World.GetGameTime() в 0 соответствует полдню, в 0.5 - полночи, в 1 - полдню следующего дня.
моделлеры сами исправляли это фотошопом, скриптёрам не сообщали :) .
Хм, интересно только как? Хотя таких примеров не видел.
TRam_, не знаешь, а есть ли какая-нибудь встроенная функция, усиливающая четкость текстуры? В МСТС, например, редактировали шейп:
texture ( 0 0 -5 ff000000 )
, варьировали третью цифру, -5 - самая качественная. А есть ли что-то аналогичное в trainz?
TRam_, не знаешь, а есть ли какая-нибудь встроенная функция, усиливающая четкость текстуры?могу добавить к ответу Эрендира что в трейнз есть всёго 2 способа отображения текстуры - "обычная" и "максимально чёткая", к промежуточным доступа нет. Прописывается в .texture.txt файле как
MipFilter=none
Но при этом возникает "рябь в глазах" и несколько падает производительность.
Чтобы не создавать новую тему ради одного вопроса, напишу его в своей:
подскажите, по какой причине могут исчезать меши? Имеется основная мешь, у которой есть точка привязки, допустим, а.door. Есть мешь двери, которая прописана в конфиге и крепится к точке привязки. В игре все отображается нормально, анимация двери также работает без проблем, но вот если под определенным углом направить камеру на мешь двери, то она исчезает, стоит только сдвинуть камеру на миллиметр, снова мешь появляется. Что это может быть и как можно исправить?
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot