![]() |
Ответ: Странное.
Ну ради такого дела завел таки аську: 615638833.
Почему нельзя на форум выложить? Такие тайные технологий что за ними пентагон охотится? |
Ответ: Странное.
![]() Кажется я сделал велосипед :-D Придумал генерацию лайтмапов на основе хейгтмапы. 1. Узнаем с какой стороны солнце. 2. Создаем массив из интегер с разрешением в 4 раза больше того массива в котором хранятся данные высот вершин. у меня это (8х32)х(8х32). 3. Узнаем направление источника света в виде 2д вектора. Строим еще один массив с разрешением равным количеству вершин. Далее смещаясь от угла куда первыми приходят лучи от света проверяем затенит ли вершина соседнюю (минимальный перепад высот который будет затенен вычисляется легко, т.к. дельтаикс и дельтаигрек между вершинами постоянны. Заполняем массив значениями. На свету эта вершина или нет. 4. Для мест где соседствуют затененные с освещенными вершины строим более подробные кусочки лайтмапы 4х4. 5. Учусь писать изображение не врайтпикселями, а сразу числами в жопег или бмп. 6. Немного извращений в пиксельном шейдере. И будет быстрая лайтмапа за время исполнения на цпу ~ 1 мс или меньше. :) |
Ответ: Странное.
делал нечто подобное, только шейдером, имея карту высот на видюхе и рендеря лайтмап за несколько кадров кусками. шейдер выглдяит вот так:
Код:
float2 TexCoords = IN.ScreenTC / MapSize; |
Ответ: Странное.
Цитата:
|
Не, там такой говнокод что переделывать уже хочется.
Надо делать отдельно генерацию данных как у меня, здесь мне все еще кажется вполне приличной созданная конструкция. А вот часть где происходит позиционирование вершин надо бы вынести в отдельный класс, где объектом будет вершина и несколько методов её перемещения и контроля. Вообще надо заморочится системой квадов. Ввести какой-нить менеджер квадов запоминающий какой индекс соответствует четырем вершинам с двумя треугольниками и в какой поверхности они есть. Т.к. квадов из одной поверхности все-таки не хватит, а сотня поверхностей как у меня делает узким местом видеокарту. Решил сочинять класс вода. Имея в виду перегрузку операторов и используя наследование и виртуальные функции. Это будет эпичная хрень на девиантных методах программирования :) Код:
// вектор в тридэ Цитата:
Придумал прикольную защиту от кряканья триальных версий. Делается обычный таймер по которому приложение вырубается. создается второй таймер, который сработает через время: таймер1+RND(10,240); Создаем меш, парентим его к камере, создаем поверхность 30-40 тыщ квадов перед камерой, так чтобы они перекрывали обзор, а координаты у вершин образовывающих квад совпадали. Ставим этому мешу xEntityAlpha mesh,0.01. xHideEntity mesh если таймер2 дотикал до своего времени xShowEntity mesh. Fatality. Драйвер видюхи в панике. И даже если после восстановления все ок, это ттттттттрмооооооозззззззззиииииииитттттт адски, а почему не понятно и не видно :) Какие-то проблемы, ок вышлите нам екзешник, ага значит проблемы нет? Цитата:
|
Ответ: Странное.
Использование данного софта Вами, покрывается условиями соглашения, по ссылке: ...
Если вы не согласны с условиями соглашения, вы не должны использовать данный софт. |
Ответ: Странное.
выглядит круто
|
Ответ: Странное.
Дерево
Суть в чем: есть главная рекурсивная функция BuildTree, принимающая параметром небольшую структурку: Код:
struct Trunc{ ![]() |
Ответ: Странное.
![]() Код:
Function BuildTree() У тебя кстати получилось похоже на алгоритм в котором есть несколько точек куда ветки должны более охотно расти. |
Ответ: Странное.
Твое дерево круче смотрится, но оно состоит из готовой модели??
мое делается с нуля, вот код а насчет рандомного ствола - проще сделать окружность, слегка помятую: и по ней строить ствол. |
Ответ: Странное.
Нет. Там 12 полигонов свернутых в трубочку и раставленными в тридэмаксе тектсурными координатами. Раньше для меня было проблемой сгенерировать такой меш. А деревья одинаковые. У твоего со ствлом все гуд, лучше чем у меня, но вот листья приклеены неправильно. Их надо клейть ближе к концам веток, на толстых частях ветвей у нормального дерева листьев нет, если это не тополь. И если ты присмотришься к самим листьям у нормального дерева, то увидешь, что листья у них примерно одного размера и нормали поверхности ВСЕХ листьев смотрят в одном направлении, на источник освещения. Впринципе последний левел ветвей должен быть плоским и стараться лежать в плоскости примерно паралельной плоскости с нормалью (0,1,0) плюс минус 15 градусов. Вот такие у меня дополнеия к эль сустем.
кстати можно не заморачиваться со слиянием всех элементов дерева в одну поверхность я уже практически дописал менеджер квадов, который можно будет легко превратить в менеджер трианглов каковым и обернуть все полигоны сингосюрфицируемого дерева. А потом провести слияние вершин с одинаковыми нормалями позициями и текстурными координатами. Единственно надо пытаться уложиться по полигонам в ~15к . |
Ответ: Странное.
Вот с листвой то у меня и были основные проблемы))
Не знал как их клеить. Да и тормозное оно какое-то, из за тексы с альфаканалом ФПС падает в 2 раза. Провал :( |
Ответ: Странное.
. Ну вот поэтому я и хочу основную часть листвы имитировать несколькими мятыми облачками.
Кстати твоему дереву не от чего тормозить, разве что ты каждый листик сделал отдельным сюрфейсом, тогда да. Мое не тормозило на встроеном intel gma 945. При этом еще и листики все поварачивались к камере на каждый кадр. у тебя фэйл по элементам образующим твое дерево, а по само алгоритму пока все нормально, наверно. Так пару раз бубном стукнуть и полсотни строк накидать, что бы листья синглсюрфейсом стали. |
Ответ: Странное.
Листья синглсюрфейс
Код:
struct Trunc{ |
Часовой пояс GMT +4, время: 22:30. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot