![]() |
Ответ: Странное.
У левого здоровецкие материки выходят. А у правого архипелаги. Каждый хорош в своем. :-)
|
Ответ: Странное.
Привел шум в более приличный вид и ускорил его до почти приемлемого уровня, но он все равно пока медленней даймонда в size раз.
Цитата:
|
Ответ: Странное.
примерно 30-40% от планируемого класса:rolleyes: фпс 350 при движении по диагонали, ~400 при движении параллельно осям. И сильно снизиться уже не должен:)
|
Ответ: Странное.
Мне почему-то кажется, что код можно неплохо укоротить, если использовать (написать) библиотеку для работы с матрицами с адекватным интерфейсом (перегруженные операторы = * и прочее).
Но, возможно, только кажется |
Ответ: Странное.
Да, быстр пробегаясь по коду, замечаешь симетрии и шаблоны, значит можно вывезти в отдельные мелкие рутины и использовать их.
|
Ответ: Странное.
Цитата:
|
Ответ: Странное.
А мне кажется для ~100 часов опытов в с++ не такой уж и ужасный код :)
Перегрузку операторов, всякие там виртуальные функции, наследование, шаблоны и т.д. я еще не пробовал, но планирую освоить. И да, дьявол кроется в деталях. Может смещения и получится унифицировать как получилось объединить деформацию и обновление нормалей, но вряд ли там довольно разные вещи в зависимости от направления происходят. |
Ответ: Странное.
Почему имя переменной far пугает компилятор? O_o
|
Ответ: Странное.
Цитата:
|
Ответ: Странное.
|
Ответ: Странное.
Неплохо. Стыки бы еще как-нибудь замазать.
P.S. Кулер на видеокарте зашумел. Работало шустро, никаких глюков. Но через минуту вылетело с "Драйвер видеокарты бла-бла-бла и был восстановлен." У меня все сейчас так вылетает, начиная с Майнкрафта. Хотя и не так быстро. |
Ответ: Странное.
Цитата:
|
Ответ: Странное.
По теме: еще берега "дрожат" сильно.
|
Ответ: Странное.
Цитата:
Ну а вылетело быстрей из=за того, что я отрубил vsynk, а на слабых видеокартах результат деформаций рисуется дольше, чем происходит их расчет и манипуляции с моделями. Соответственно видеокарта работала на все 100%. Я заметил странную вещь. Создание объекта моего класса занимает заметное на глаз время, и в окне приложения я вижу постепенное выполнение конструктора. Но из структуры программы объект должен быть сначала полностью создан и только затем запустится главный цикл, где есть команда рендервурлд. Это что получается мой компилятор умудряется делить мой код на потоки, когда я большую часть вычислений впихиваю в класс? И почему оно не рушится когда обращается к еще не существующим данным в классе при апдейте. Что это за неведомая мистическая херня происходит? Сам хорс же не причем ведь? |
Ответ: Странное.
Цитата:
Если вы считаете себя новичком в ЯП, то, возможно, не стоит начинать решать задачи, теоретическую подоплёку которых вы также собираетесь взять нахрапом. Хотя, с другой стороны, такой подход (в условиях информационной изоляции), я думаю, мне, в своё время, не помешал. Но у вас: есть и-нет, и, наверняка, нет желания тратить время на велик - так что, наверное, стоит чуть подтянуть теорию. И дело не только в математике, и не столько в абстракциях Си++, сколько в несворачивании, очевидного Код:
float val00=m1[k][i-step][j-step]; Код:
for(int j=0;j<width;j++){for(int k=0;k<width;k++){m1[i][j<<(size-i-1)][k<<(size-i-1)]=kof*(1-2*(float)rand()/RAND_MAX);}} Возможно (весьма вероятно), что я необъективен и попросту ною, подавляя начинающих... Прошу не принимать близко к сердцу код не читал @ сразу отвечал |
Ответ: Странное.
В бытность свою студентом стройфака я всегда оптимистично в течении семестра полагал, что: так этот, тот и вот тот предмет с нехилыми курсачами я куплю, и пребывая в полном спокойствии не появлялся ни на лекциях ни на практических занятиях. А затем, внезапно, при неожиданном наступлении зачетной недели выяснялось, что вот эти восемьсот рублей надо растянуть до начала экзаменов(и дело происходит не в общаге, и интернета нет, и писать поясниловку надо от руки, а картинки рисовать от руки по госту пару-тройку а1, а право выполнять все на компе можно было заслужить только истовым навязчивым ботанизмом). А планируемые покупки в бюджет не влазят и кредита никто не даст. Пробовали ли вы когда-нибудь делать курсовую работу не зная даже теории и имея в руках только !неправильный! пример сляпанный каким-то дебилом прошлых лет из нескольких работ? Пробовали ли вы сдать результат враждебно настроенному преподу постепенно осознающему, что вот это перед ним сидящее тело передумало дать ему пару-тройку тыщь? К четвертому курсу я развил навык до уровня сочинения теории из примера расчета :) А как я весело передумал 27 мая заказывать диплом в виду финансовых затруднений. И как я его подписал за три дня до конца срока, и как надо мной ржали преподы на защите, когда выяснилось, что он сделан так, что проходит по всем кафедрам. Эмм... О чем это я? У меня прокачан скилл нахрапа :D.
Насчет великов, лежащие в инете реализация редко иначе как анальными назвать нельзя, это те в которых я по коду могу вообразить, что примерно там происходит. А чаще вся информация сводится к паре рисунков либо примитивного уровня либо художественного. Возможно я недооцениваю матричные операторы(проще сказать, что я о них не имею представления) Но вполне очевидно, что они(операторы) могут каким-либо(весьма разнообразным) образом изменить существующие данные, но вот превратить нолики в 4 миллиона не повторяющихся набора данных со связанными краями, это вряд ли, я не верю в это. ЗЫ: Походу никто не осознает что у меня внутри класса происходит на самом деле, ну и ладно. Кстати как эти матричные операторы можно применить к этому: Код:
void Surface_Switcherm(int flag){ |
Ответ: Странное.
макрос far определен где то в windows.h
не включай сей файл и можно обзывать переменную far. или #undef |
Ответ: Странное.
|
Ответ: Странное.
|
Ответ: Странное.
Самое смешное, что все трудоустроенные по специальности люди дипломы заказли. То есть все кто хоть както разбирался в своей специальности и имел возможность заказать заказали, почему то все поголовно предпочли потратить полгода на получение реальных навыков вместо кучи ритуальных расчетов по доисторическим снипам конструкций, которые теперь считают более вменяемым и автоматизированным образом.
Без проблем подобный образ жизни вести может максимум процентов десять студентов. |
Ответ: Странное.
Дык, система образования всегда отставала от современных разработок и стандартов в индустрии, для которой якобы студенты готовятся.
Те кто работают всё это время которое студент "учится", приобретают намного ценней опыт и знания + копейку. |
Ответ: Странное.
impersonalis, че O_o?!!!
Что это было? Причем тут правильно не правильно? Тем более правильно или нет человек может сказать только перед тем как склейть ласты. Зы: Наверно приятно чувствовать себя телепатом, но это патология. |
Ответ: Странное.
Цитата:
Честно говоря, теперь, узнав что автор уже человек с высшим образованием, технарь, не может осилить относительно простую теорию (в которой сам заинтересован - а такая мотивация сдвигает горы), http://www.detskie-anekdoty.ru/detsk...po lgoda.html dsd, умерьте спесь: если б вы были семи пядей во лбу и действительно ценили своё время - вы бы бросили учёбу курсе на первом-втором. А так - гордится тут абсолютно нечем. Прошу извинить, если обидел. Это сугубо моё мнение. Практика показала, что, разумеется, есть и другие стратегии поведения, но они сопровождаются и другими решениями (типа того, что я привёл: бывает да - ВУЗ не тот выбрал, со специальностью ошибся, недооценил свой интеллект). Думаю, нам всё же пора вернуться к теме обсуждений, а не доказывать друг другу свою крутость. |
Ответ: Странное.
Полностью поддерживаю. Но это аналогично условному "разделению" людей на тех кто может двигаться сам, и тех кому нужны пинки под зад. При этом это не две категории, а некий отрезок, на котором каждый где-то между.
Но к сожалению по моим наблюдениям, большая часть, которая сидит тихо и никого не трогает, студентов, они как раз именно те, кто не имеют никаких целей, учатся, не зная зачем. На те же компьютерные направления идут и то побольше нормальных голов. А вот посмотреть другие отрасли, так там ваще большинство потерянных, нифига не думающий куда, что, зачем и для чего.. Это не абсолютная истина, а лишь частичная, не опровергает твоей, да. А лишь дополняет картинку.. Споров нет. ;) Везде есть плюсы и минусы. Даже самое захолустное учреждение, даст материал с базой, который очень важен, и который обычно игнорируется и "проскакивается" энтузиастами на началах, потом "жалеют". |
Ответ: Странное.
![]() ![]() ![]() ![]() |
Ответ: Странное.
|
Ответ: Странное.
http://forum.boolean.name/showpost.p...5&postcount=29
Похвастаюсь))) Правда водичка дёргаеца слишком быстро - разрабатывалось все на столь маломощном компе, который выдавал приятные колыхания той самой водички) |
Ответ: Странное.
Цитата:
можно ж проще Код:
float scale; xSetEffectFloat(first.farmesh,"scale",0.1); Кстати по моему надо не только от высоты, но и от нормали установить зависимость текстуры. Например если уклон больше 30 градусов то начинается смешивание со скальной текстурой и после ~60 градусов остается уже только текстура скалы без примеси текстуры текущей зоны :) |
Ответ: Странное.
Цитата:
|
Ответ: Странное.
![]() Починил нормали, Заменил верхний алгоритм генерации шума на более адекватный, сгладил горизонт, научил шейдер смазывать границы между текстурами. Ужал код класса до 500 строк. Yeahh... Но какой же все таки стремный результат. Надо сочинять продавливатель рек и какой-нибудь генератор растительности. Код:
else if(input.position2>=21.5f && input.position2<34.5f){ |
Ответ: Странное.
Жду генератора растительности, сам пытаюсь сделать)
|
Ответ: Странное.
Ну деревья я еще в бэйсике понял как генерировать алгоритмом l-system, а вот цветочки попробую по алгоритмической ботанике. Главное одной поверхностью обойтись, что бы оно за один дип рисовалось.
![]() Научил шейдер поверхность с наклоном более 40 градусов зарисовывать скалой. Код:
float4 rock = tex2D(rocknSampler, input.texCoords); ![]() |
Ответ: Странное.
Обилие условных операторов лучше попытаться заменить на несколько lerp'овъ. Всяко быстрее будет.
|
Ответ: Странное.
Цитата:
|
Ответ: Странное.
Цитата:
|
Ответ: Странное.
Конечто есть, но в другом городе. Ты дай аську свою, спишемся
|
Ответ: Странное.
Ну ради такого дела завел таки аську: 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. Драйвер видюхи в панике. И даже если после восстановления все ок, это ттттттттрмооооооозззззззззиииииииитттттт адски, а почему не понятно и не видно :) Какие-то проблемы, ок вышлите нам екзешник, ага значит проблемы нет? Цитата:
|
Ответ: Странное.
Использование данного софта Вами, покрывается условиями соглашения, по ссылке: ...
Если вы не согласны с условиями соглашения, вы не должны использовать данный софт. |
Ответ: Странное.
![]() Маленькое вуду со снегом и чем-то вроде контрастности зависящей от текстуры. Код:
float4 color=diffuse * lit * lightColor+diffuse*ambient; |
Ответ: Странное.
выглядит круто
|
Ответ: Странное.
Дерево
Суть в чем: есть главная рекурсивная функция BuildTree, принимающая параметром небольшую структурку: Код:
struct Trunc{ ![]() |
Ответ: Странное.
![]() Код:
Function BuildTree() У тебя кстати получилось похоже на алгоритм в котором есть несколько точек куда ветки должны более охотно расти. |
Ответ: Странное.
Твое дерево круче смотрится, но оно состоит из готовой модели??
мое делается с нуля, вот код а насчет рандомного ствола - проще сделать окружность, слегка помятую: и по ней строить ствол. |
Ответ: Странное.
Нет. Там 12 полигонов свернутых в трубочку и раставленными в тридэмаксе тектсурными координатами. Раньше для меня было проблемой сгенерировать такой меш. А деревья одинаковые. У твоего со ствлом все гуд, лучше чем у меня, но вот листья приклеены неправильно. Их надо клейть ближе к концам веток, на толстых частях ветвей у нормального дерева листьев нет, если это не тополь. И если ты присмотришься к самим листьям у нормального дерева, то увидешь, что листья у них примерно одного размера и нормали поверхности ВСЕХ листьев смотрят в одном направлении, на источник освещения. Впринципе последний левел ветвей должен быть плоским и стараться лежать в плоскости примерно паралельной плоскости с нормалью (0,1,0) плюс минус 15 градусов. Вот такие у меня дополнеия к эль сустем.
кстати можно не заморачиваться со слиянием всех элементов дерева в одну поверхность я уже практически дописал менеджер квадов, который можно будет легко превратить в менеджер трианглов каковым и обернуть все полигоны сингосюрфицируемого дерева. А потом провести слияние вершин с одинаковыми нормалями позициями и текстурными координатами. Единственно надо пытаться уложиться по полигонам в ~15к . |
Ответ: Странное.
Вот с листвой то у меня и были основные проблемы))
Не знал как их клеить. Да и тормозное оно какое-то, из за тексы с альфаканалом ФПС падает в 2 раза. Провал :( |
Ответ: Странное.
. Ну вот поэтому я и хочу основную часть листвы имитировать несколькими мятыми облачками.
Кстати твоему дереву не от чего тормозить, разве что ты каждый листик сделал отдельным сюрфейсом, тогда да. Мое не тормозило на встроеном intel gma 945. При этом еще и листики все поварачивались к камере на каждый кадр. у тебя фэйл по элементам образующим твое дерево, а по само алгоритму пока все нормально, наверно. Так пару раз бубном стукнуть и полсотни строк накидать, что бы листья синглсюрфейсом стали. |
Ответ: Странное.
Листья синглсюрфейс
Код:
struct Trunc{ |
Ответ: Странное.
|
Ответ: Странное.
![]() провел ацкую для моих способностей кодера битву за дипы. Снизил их количество радикально. Узнал много нового про ссылки и че нельзя и чего не надо делать с классами. Результат двоякий, фпс минимальный не повысился, средний возрос от полутора до двух раз. Теперь можно в любом месте вырезать дырку без регенерации поверхностей. Теперь данные генерируются и хранятся в одном классе, а модели в другом. А ведь на глаз разницы нету. |
Ответ: Странное.
По коду мельком: - лучше в объявлении класса писать только пропиты* методов; - в методах, при обращении к членам класса, лучше использовать синтаксис this-> Код:
this->x=a; +убирает неоднозначность при совпадении имён (можешь дать аргументам адекватные имена x,y,z); +большинство IDE будет подсказывать (выводить список) членов класса: меньше опечаток и загруженности человеку; +код более нагляден. апд: * - прототипы имелось в виду, вот так опечатка |
Ответ: Странное.
|
Ответ: Странное.
|
Ответ: Странное.
|
Ответ: Странное.
|
Ответ: Странное.
На сосны.
|
Ответ: Странное.
То есть иллюзия именно бревна покрытого корой, а не просто столбов с бугристой поверхностью?
Подайте люди добрые модельку анимированную в б3д какого-нибудь гуманоида, на опыты. Чтобы была анимация ходьбы, шаги в сторону, бег и ну и рукой дрыгал угрожающе, а если еще и руками потирать сможет вообще сказка :rolleyes: |
Ответ: Странное.
Вообщем - да. Попробуй на всё это дело налепить ещё фототекстуру.
|
Ответ: Странное.
Цитата:
|
Ответ: Странное.
|
Часовой пояс GMT +4, время: 22:30. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot