Дизасм Elite
"Show normalez" не работает?
И немножко разжуй, как действует "Scale". Если меняю его, то точки не двигаются, но расчёт видимостей граней меняется.
------
Изучил код. Строки 280-282 говорят, что Scale влияет только на расчёт видимостей плоскостей.
------
280-281 даже можно было-бы вынести из цикла?
282 выглядит математически верно, если скалярное произведение получать "матумножением" вектора на транспонированный вектор.
Осталось вычислять плоскости правильно, на основании координат узлов.Отредактировано Reobne (2016-12-20 13:27:02)
И немножко разжуй, как действует "Scale". Если меняю его, то точки не двигаются, но расчёт видимостей граней меняется.
------
Изучил код. Строки 280-282 говорят, что Scale влияет только на расчёт видимостей плоскостей.
------
280-281 даже можно было-бы вынести из цикла?
282 выглядит математически верно, если скалярное произведение получать "матумножением" вектора на транспонированный вектор.
Осталось вычислять плоскости правильно, на основании координат узлов.Отредактировано Reobne (2016-12-20 13:27:02)
Все так, по выносу это последствия отладки, конечно можно, изначально там была манипуляция со скалярами как в коде через индексы. Это я stat.v умножаю, а в коде model.normals.v делили. Именно к матричному виду я привел уже после.Reobne писал(а):
Изучил код. Строки 280-282 говорят, что Scale влияет только на расчёт видимостей плоскостей.
------
280-281 даже можно было-бы вынести из цикла?
Reobne писал(а):
282 выглядит математически верно, если скалярное произведение получать "матумножением" вектора на транспонированный вектор.
Не понял. По факту нужен только знак z, небольшой изврат с умножением на скаляр это потому что транспонирование и умножение матрицы на скаляр я сделал позже, можно конечно для каноничности переделать, но и так все правильно по результату.
Благодаря рендеру наметились оптимизации по коду, от нормалей отказываться нельзя (по точкам для большинства случаев будет медленнее), а вот оптимизировать их и сам алгоритм можно вполне. Формат хранения будет однозначно другой. Так же надо исключить отрисовки кораблей которые вне экрана, сейчас они определяются только z координатой, думаю можно сузить угол. По факту в 90% случаев реально рисуются 1-2 моделей из 7 максимально возможных, а считаются 3-4, тормоза из за этого приличные. Но сначала пересчет нормалей.
По scale. Нормали к плоскостям не единичной длины, они как я уже писал используются для определения точки удаления самой плоскости и масштаб нужен чтобы для близких точек не приходилось жертвовать точностью. Грубо говоря сам вектор может быть длины 128, а его удаление от центра модели делится на константу и получается 16 ( для scale=3). По моему очень элегантное решение, единственное надо заменить деление на глобальное умножение, ускорит неплохо этот момент.
По scale. Нормали к плоскостям не единичной длины, они как я уже писал используются для определения точки удаления самой плоскости и масштаб нужен чтобы для близких точек не приходилось жертвовать точностью. Грубо говоря сам вектор может быть длины 128, а его удаление от центра модели делится на константу и получается 16 ( для scale=3). По моему очень элегантное решение, единственное надо заменить деление на глобальное умножение, ускорит неплохо этот момент.
Свяжешься с вами, научишься ржаво скрипеть всякую гадость.
Дополнил говнокод своими ка, кодовыми извращениями. Чтобы плоскости высчитывались из координат узлов. Всё по тупому и не оптимально. Если узлов больше трёх, то коэффициенты наивно усредняются.
Чтобы считалка сработала, ставим галочку на "Calc planes"....
Стоп! А где на форуме кнопка добавить файл-то? Добавить картинку и видео вижу, а файл нельзя? Он много не займёт, всего 8 килобайт.
А пока пересчитанные координаты для кобры:
Код:0,0; 62,42.69278517869794; 31,19.852951024050345-18,-18.2516971737533; 55,55.35679582369133; 16,16.44658426645901618,18.2516971737533; 55,55.35679582369133; 16,16.446584266459016-16,-16.513312212884074; 52,53.71706289581203; 14,15.38119388150431516,16.513312212884074; 52,53.71706289581203; 14,15.381193881504315-14,-5.833758286588476; 47,51.337072921978574; 0,014,5.833758286588476; 47,51.337072921978574; 0,0-61,-60.92472068242524; 102,101.54120113737541; 0,-0.634632507108596261,60.92472068242524; 102,101.54120113737541; 0,-0.63463250710859620,0; 0,0; -80,-80-7,-6.3076757100813134; -42,-38.899226199373835; 9,7.8391967001182840,-3.1720657846433024e-18; -30,-26.33940666756184; 6,5.3041759846094697,6.3076757100813134; -42,-38.899226199373835; 9,7.839196700118284db #00,#2B,#14,#1Fdb #12,#37,#10,#9Fdb #12,#37,#10,#1Fdb #11,#36,#0F,#9Fdb #11,#36,#0F,#1Fdb #06,#33,#00,#9Fdb #06,#33,#00,#1Fdb #3D,#66,#01,#BFdb #3D,#66,#01,#3Fdb #00,#00,#50,#3Fdb #06,#27,#08,#DFdb #00,#1A,#05,#DFdb #06,#27,#08,#5F
Вначале идут расшифрованные параметры плоскостей, исходный рядом с пересчитанным. Ниже пересчитанные округлённые и зашифрованные.
Дополнил говнокод своими ка, кодовыми извращениями. Чтобы плоскости высчитывались из координат узлов. Всё по тупому и не оптимально. Если узлов больше трёх, то коэффициенты наивно усредняются.
Чтобы считалка сработала, ставим галочку на "Calc planes"....
Стоп! А где на форуме кнопка добавить файл-то? Добавить картинку и видео вижу, а файл нельзя? Он много не займёт, всего 8 килобайт.
А пока пересчитанные координаты для кобры:
Код:0,0; 62,42.69278517869794; 31,19.852951024050345-18,-18.2516971737533; 55,55.35679582369133; 16,16.44658426645901618,18.2516971737533; 55,55.35679582369133; 16,16.446584266459016-16,-16.513312212884074; 52,53.71706289581203; 14,15.38119388150431516,16.513312212884074; 52,53.71706289581203; 14,15.381193881504315-14,-5.833758286588476; 47,51.337072921978574; 0,014,5.833758286588476; 47,51.337072921978574; 0,0-61,-60.92472068242524; 102,101.54120113737541; 0,-0.634632507108596261,60.92472068242524; 102,101.54120113737541; 0,-0.63463250710859620,0; 0,0; -80,-80-7,-6.3076757100813134; -42,-38.899226199373835; 9,7.8391967001182840,-3.1720657846433024e-18; -30,-26.33940666756184; 6,5.3041759846094697,6.3076757100813134; -42,-38.899226199373835; 9,7.839196700118284db #00,#2B,#14,#1Fdb #12,#37,#10,#9Fdb #12,#37,#10,#1Fdb #11,#36,#0F,#9Fdb #11,#36,#0F,#1Fdb #06,#33,#00,#9Fdb #06,#33,#00,#1Fdb #3D,#66,#01,#BFdb #3D,#66,#01,#3Fdb #00,#00,#50,#3Fdb #06,#27,#08,#DFdb #00,#1A,#05,#DFdb #06,#27,#08,#5F
Вначале идут расшифрованные параметры плоскостей, исходный рядом с пересчитанным. Ниже пересчитанные округлённые и зашифрованные.
Молодец конечно, но для меня бесполезно, мне надо матричные выкладки что бы я меньше отвлекался.Reobne писал(а):
А пока пересчитанные координаты для кобры:
То что вы в школе через жопу делали это немного другое. Я думал над этим, там еще напутал скалярное и векторное, пока не знаю как лучше будет посмотрим. Читай все гоба, тут кода минимум, будешь 3д демы делать.Шыншыл писал(а):
Мож кто вспомнит про энти трюки?
krt17 писал(а):
Читай все гоба, тут кода минимум, будешь 3д демы делать.
навскидку: ты изобретаешь велосипед.
мне интересно именно тот алгоритм отсечения граней и сама процедура поворота.
когда я маялся с 4squares, я перебрал массу дем и вышло, что поляки:
- рисуют фигурки по готовым наборам данных
- рисуют буффер и кидают на экран.
в опщем это не реалтайм выходит?
Ненависть- это подарок
Я вообще нифига не изобретаю, все уже сделано, я пытаюсь разобраться как и какого хуя. А по алгоритмам базовым сам подтягивайся вот тебе для начала википиди почему знак определяет ориентацию я думаю вполне можно разобраться.Шыншыл писал(а):
навскидку:
А поляки это как молдаване, у них как ни крути только канализации из пвх по готовым схемам. Конечно это не реалтайм, векторная анимация это даже хуже обычной, призвана наебывать по своей сути:)
Пересилил себя пересчитать нормали. И столкнулся с такой батвой как векторное произведение, а именно с ... символом зла Леви-Чивиты. Оно то понятно что условиями перебора задается легко, но как то это не православно, а на форуме бог как никак. Вездесущий инет как то не дал прикольной формулы, да и я сам чет туплю. Охота сделать универсально для вектора размерности N, я так понимаю один фиг придется сделать пару ифов?