У меня есть сделанная в Блендере возвышенность\холм.
И по ее контуру хочу раставить камни, траву и деревья.
Что бы на холме были деревья , камни и трава.
Вопрос как узнать в HLSL\Compute Shader координату Y возвышунности под определенным камнем ?
Или прийдется перебирать вершины сетки на CPU и заносить в POS_XYZ камней высоту Y вершин ?
да.
Да ?
да, кпу.
На CPU не очень удобно.
Так как таких разнообразных холмов будет штук 60.
И ренднрятся те холмо , что рядом с героем. А это не больше пяти холмов на экране.
И хотелось бы быстро на Compute shadere, генерить дату позиции травы,камней,деревьев на видимом холме.
Иначе в ОЗУ будет дофига данных позиций с 60 холмов.
Уснул что ли ? :)
На CPU сделал. И залил в ConstantBuffer.
Теперь по контуру холма есть 120 камней.
Я так теперь могу бороду выростить у холма ! Как Дукалис Дукат :)
Я покрою эту лысину из 5 поста, волосами !
По хорошему надо брать нормаль треугольника холма, чтобы камень повернуть правильно к плоскости треугольника.
Или чуть пониже по Y камень в холм рисовать.
Чтобы большая часть камня не висела в воздухе.
а вы смотрели доклад GDC про Horizon Zero Down, хотя даже там есть такая проблема)
https://youtu.be/ToCozpl1sYY
Всегда есть 2 пути, предварительный и на лету. На лету делают тогда когда это ускоряет, а не замедляет.
Если предварительно запечь все heightmap для каждого холма, сложить их в атлас, а затем читать из него информацию.
Это одно из самых очевидных решений.
А там вы можете брать из неё хоть в шейдере. Я не дошел до создания геометрий на лету.
Поэтому CPU, это наше всё)
Если вычесть относительную позицию pivot холма от той, в которой его запекали в текстуру и добавить высоту из текстуры, получим точную позицию в пространстве.
Salamandr
> На лету делают тогда когда это ускоряет, а не замедляет.
Ну так-то на лету может быть дешевле по занимаемому месту.
Понравилось как на видео 18 минуты, рисуют в выбранном участке земли траву.
Но вот я не пойму как мне найти нужные треугольники , нужного участка сетки.
Типа перебирать все треугольники сетки земли, пока координаты XZ не совпали с координатами курсора ?
Потому что как я вижу треугольники ресуются не по порядку земли, а больше хаотичными кусками.
ronniko
> Типа перебирать все треугольники сетки земли, пока координаты XZ не совпали с
> координатами курсора ?
рисуй в отдельный слой UV координаты, и по ним восстанавливай позицию.
Это ж редактор тайм, тут можно обмазаться слоями.
ronniko
там для деревьев одна текстура, для травы другая.
Поэтому по сути ты рисуешь в слое (текстуре). Разрежённость пространства определяется непосредственно твоими настройками и представлениями. Например рисуя деревья, у них есть какой то радиус (или ширина и высота). Можно высчитать средний радиус (или взять минимальный из возможных) и по нему складывать в текстуру, где каждый пиксель будет равен этому радиусу. Ну а дальше дело техники, лишь добавить переменную которая будет определять более большие расстояния между ними, что и будет определять разрежённость. В текстуру можно складывать не только наличие или отсутствие дерева в этом пикселе, но и индекс модели. Получится палитра возможных моделей, как индексируют цвета в PNG.
Доклады GDC очень информативны и после их просмотра, я будто открываю новые вселенные способов мышления. Это просто потрясающие люди..
Salamandr
А ты как корректно добавляешь ролик с ЮТуба? Я делаю вот так [ youtube = https : // youtu . be / w_eWB3NICfo ] без пробелов и выходит вот такая хрень:
Даниил Петров
> А ты как корректно добавляешь ролик с ЮТуба? Я делаю вот так [ youtube = https
> : // youtu . be / w_eWB3NICfo ] без пробелов и выходит вот такая хрень:
Объясняю на пальцах этот ооочень сложный интерфейс.
Копипастишь линк на видео https://www.youtube.com/watch?v=WMlcLwdxF2s
выделяешь его в своем редактируемом сообщении
и нажимаешь на
[youtube]
Готовечно.
да, ему надо просто скормить "w_eWB3NICfo" если ты руками делаешь.
Тема в архиве.