MementoMori 4 28 февраля, 2019 Опубликовано 28 февраля, 2019 · Жалоба Коллеги, планирую проект на stm32f746 с дисплеем и touchgfx. Необходимо будет на экран выводить 3д модельки из примитивов. Скорость большая не требуется, так как анимации не будет. Картинку нужно будет просто нарисовать и вывести, то есть скажем скорость в 0.2 fps вполне устроит. Текстурирования не будет. Нужно только чтобы примитив был подобающе освещен источником света. В итоге что хотелось бы - библиотеку, в которой прописана вся математика и формирование картинки, что оставалось только прописать, как именно, на низком уровне, осуществляется вывод точки на экран. По аналогии с fatfs - в ней прописаны все функции, а в отдельном файле пустые функции readbyte и writebyte, в которые остается только добавить специфический для устройства код. Посоветуйте что-нить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 20 28 февраля, 2019 Опубликовано 28 февраля, 2019 · Жалоба https://github.com/avem-labs/ol3d - язык СИ, принимает формат Obj, рисует в буфер. Для вывода на дисплей нужно реализовать свою функцию, отображающую буфер на экран. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 28 февраля, 2019 Опубликовано 28 февраля, 2019 · Жалоба То есть в буфере готовая картинка, я правильно понял? Хм... как то скриншот не очень. Она что, делает модель из точек, без расчета освещенности? Вы с этим работали? Собачка, такая как на скриншоте это ее потолок? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 28 февраля, 2019 Опубликовано 28 февраля, 2019 · Жалоба 1 hour ago, MementoMori said: Коллеги, планирую проект на stm32f746 с дисплеем и touchgfx. А в директорию tinygl-0.4-ugfx не заглядывали? Это же и есть библиотека работы с 3D Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 28 февраля, 2019 Опубликовано 28 февраля, 2019 · Жалоба 1 hour ago, AlexandrY said: А в директорию tinygl-0.4-ugfx не заглядывали? Это же и есть библиотека работы с 3D Так то ugfx, а у меня touchgfx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 20 28 февраля, 2019 Опубликовано 28 февраля, 2019 · Жалоба 2 часа назад, MementoMori сказал: То есть в буфере готовая картинка, я правильно понял? Хм... как то скриншот не очень. Она что, делает модель из точек, без расчета освещенности? Вы с этим работали? Собачка, такая как на скриншоте это ее потолок? Да, в буфере вся картинка, её вывести только остаётся. Без освещённости. Рисует полигонами или просто линиями. Вот примеры для этой модели: Спойлер А вам нужно с освещённостью? вроде этого? Спойлер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 28 февраля, 2019 Опубликовано 28 февраля, 2019 (изменено) · Жалоба Да, вроде этого. Причем не лучше, а то боюсь дальнейшее наращивание крутизны отрицательно скажется на быстродействии. Изменено 28 февраля, 2019 пользователем MementoMori Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 20 1 марта, 2019 Опубликовано 1 марта, 2019 · Жалоба Можно прямо эту библиотеку доработать. Например, вот что получается, если добавить в неё около десяти строчек кода (под спойлером). Для получения освещения в функции ol3d_draw_Element в вектор color записываю нормаль от треугольника a,b,c. Потом в функции ol3d_getColor из этой нормали получаю интенсивность освещённости. Вся теория очень хорошо расписана в этой статье, все функции для работы с векторами уже есть в библиотеке. Артефакты отрисовки на стыке плоскостей тоже можно убрать - это ещё около 10 строчек кода изменить. Для этого реализацию функций ol3d_draw_Line и ol3d_draw_Triangle нужно немного поправить, как и зачем - описано в этой статье. Можете почитать тот цикл статей + комментарии к ним и за день-два доработать эту библиотеку под своё применение. Спойлер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 2 марта, 2019 Опубликовано 2 марта, 2019 · Жалоба Уже лучше. Спасибо! Во! Нашел картинку, максимально приближенную к тому, что мне нужно. Можно достичь такой графики, если допилить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 20 4 марта, 2019 Опубликовано 4 марта, 2019 · Жалоба Не знаю, пробовать нужно. Может быть под конкретно ваше применение придётся много переписывать, а может и нет. Проще всего взять и самому попробовать - там код простейший и к платформе не привязан, можете прямо на ПК отлаживаться (например, скриншоты которые я выше выкладывал - просто в Qt вывел из буфера картинку через QImage, вы можете использовать любой другой вариант). Просто сделать модельку не серой а, например, зелёной легко - при вычислении цвета зануляете R и B каналы, а канал G - меняете значение в зависимости от освещённости. Или нужно несколько цветов одновременно? Скругления - это просто увеличение количества полигонов на модели. Если полигонов будет слишком много то для ускорения отрисовки (точнее, расчёта освещённости) можно хранить нормали прямо в obj файле, а библиотеку добавить их чтение. Кстати, про форматы входных фалов вы тоже ничего не указали. Полноценного парсера obj в ol3d нет, там просто применяется формат хранения данных модели как в obj. Правда формат простой, примеров, как его разбирать - много. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться