Quest3D - Русскоязычное сообщество

Quest3D => Визуализация, Шейдеры => Тема начата: cyop от 09 Ноября 2011, 21:46:45



Название: У меня такая проблемА.! Надо визуализировать посёлок
Отправлено: cyop от 09 Ноября 2011, 21:46:45
привет всем.
Стоит такая задача, мне надо сделать 3д модель будущего посёлка, состоящих в основном из однотипных домов.
Я подумал что дело будет проще используя NatureGenerator, одну модельку привязал, и расплодил.
Сделал модель дома как один объект.
Но не тут то было.
Неучел того что, объекты разделяются при экспорте,както.
Допустим в максе нужные полигоны разделил на разные ID и у них разные материалы. И по этим же id они внутри объекта разделились на кучу каналов.

И когда привязываешь все каналы к NatureGenerator и начинаешь рисовать то рисуется только каркас здания.

Как можно это решить?
Либо придётся сделать модель без никаких айди с одной текстурой ???


Название: Re: У меня такая проблемА.! Надо визуализировать посёлок
Отправлено: Alteste от 09 Ноября 2011, 22:46:19
Делаешь клоны своих домов в максе с инстансом и экспортируешь в квест с опцией Separate objects with instansing
Для материала - сделай единую текстуру для всего дома


Название: Re: У меня такая проблемА.! Надо визуализировать посёлок
Отправлено: Sqwer от 10 Ноября 2011, 02:00:46
Для начала нужно посмотреть какого качества эти домики должны быть. (может ты гулять будешь  по улицам, а быть может будет вид только с высоты птичьего полёта).

Варианты решения:
1) как верно подметил Альтест, можно заделать одну большую текстуру на элементы домиков и их использовать (метод назается атласингом). Жаль если только придётся гулять по улачкам -  текстуры не хватит. (текстура 9К*9К не подойдёт - будут жестокие тормоза из-за кэш миса текстуры, что особенно актуально для карт предыдущих поколений).


2) Не забываем, что Иесус дал возможность программировать на Квесте или собирать каналы для него.

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

2б) Пишим канал на С++  (можно и на CLR и на CRT) и радуемся.

P.S. А вообще, посёлок это много кв.км -> много дипов.
так что лучше всё собрать по батчам, а то ФПСу не обрадуетесь. (в ДХ9ке нет константных буферов, и смена контента для шйдеров происходит весьма дорого)

Если не хочется выполнять что-либо из пункта 2, то для вас есть менее производительный рендер Юнити. (только есть одна не очень приятная особенность, пусть ФПС там и достойный, но вот переодично всё подтормаживает из-за чистильщика мусора).


Название: Re: У меня такая проблемА.! Надо визуализировать посёлок
Отправлено: Ruslan от 10 Ноября 2011, 02:18:50
домики бывают разные :)
детализированные по 20-30 тысяч тринглов, а бывают боксы «лол-поли», если примитивные, то лучше сшить их в один мешь.
если же детальные, то стоит посмотреть на загрузчик Collada


Название: Re: У меня такая проблемА.! Надо визуализировать посёлок
Отправлено: cyop от 15 Ноября 2011, 17:03:44
Спасибо!
ещё один вопрос возник
сделал генплан, очертания участков - как один объект, а улицы, т.е. асфальт другой объект, и их приложил близко друг к другу, оказывается на обзоре из далека, рендер как то глючит и все друг на друга налаживается и мерцает. А при близком осмотре всё замечательно и глюков нет, а на этой цене вид из далека очень важен.
Получается их тоже надо объединить в один меш, и исключить те полигоны которые друг на друга налаживаются ?
Либо есть какой нить другой вариант попроще?


Название: Re: У меня такая проблемА.! Надо визуализировать посёлок
Отправлено: Ruslan от 15 Ноября 2011, 18:47:55
cyop
В данном случае есть три решения:
- подкрутить Near\Far clipping plane distance у камеры (тут все зависит от масштаба сцены)
- написать свой шейдер для так называемой "декали" с учетом альфа блендинга и альфа канала плейн(тот что сверху будет, в вашем случае генплан) смешивается при рендеринге с бэк-буфером
- порезать геометрию ландшафта и генплана таким образом, чтобы треугольники у этих мешей не пересекались.


Название: Re: У меня такая проблемА.! Надо визуализировать посёлок
Отправлено: Sqwer от 16 Ноября 2011, 10:18:27
cyop
Советую Вам прочесть книжку Френка Луны про директ. Там всё очень ёмко описано по принципам работы Direct3D.

Кроме того следует уяснить, что квест - это не движок. Это скорее сильный фремворк с нодным графическим скрипт языком.


То теме:
// техника декалей
technique blendAlphaDecal
{
   pass P0
    {
      VertexShader = compile vs_3_0 v();
      ZEnable = true;
      ZWriteEnable = false;
      
                // порядок обходавершин
      CullMode = ccw;
      
                // смещение по глубине
      DepthBias = -0.0000001;
                // угловая градиентная компенсация смещения по глубине
      SlopeScaleDepthBias = -1.00;
      
      ShadeMode = Gouraud;
      AlphaBlendEnable = false;
      AlphaTestEnable = FALSE;
      PixelShader = compile ps_3_0 f();
   }

}

ИНТЕРЕСУЮЩИЕ СТРОКИ:
DepthBias и SlopeScaleDepthBias

Без расширений в Квесте эти параметры DepthState'а можно применить только в шейдерах.


Название: Re: У меня такая проблемА.! Надо визуализировать посёлок
Отправлено: Alteste от 16 Ноября 2011, 12:24:51
Ну вообще то не "налаживаются", а накладываются и этот эффект называется Z-Fighting http://en.wikipedia.org/wiki/Z-fighting (http://en.wikipedia.org/wiki/Z-fighting)


Название: Re: У меня такая проблемА.! Надо визуализировать посёлок
Отправлено: cyop от 20 Ноября 2011, 13:16:23
спасибо
не смог нормально сделать анврап и рендертутекстуре, поэтому текстура с альфа каналом никак немогла нормально леч на нижний полигон, пришлось по трудному пути пойти.