Ответы пользователя по тегу 3D
  • Чем открыть или переконвертировать большую 3d модель?

    SHVV
    @SHVV
    В этом случае 3D-шники докупают памяти и ставят 64-х битные проги.
    Вообще, 7.5м полигонов - это не так уж и много, я на 4-х ГБ открывал и большие файлы (3D Max, ZBrush).
    Может файл какой битый?

    PS: А программисты пишут утилиту, разбивающую файл несколько более мелких, благо .obj - простой текстовый формат.
    Ответ написан
    Комментировать
  • Сколько стоит поставить 3D-модель человека в определенную позицию?

    SHVV
    @SHVV
    Не скажу в ценах, но попробую оценить в человеко-часах.

    Poser предельно прост, любую позу на встроенных человеках вы можете выставить сами за несколько минут. Плюс несколько минут на рендеринг, если в большом разрешении.

    С остальными редакторами и кастомизацией всё сильно варьируется и зависит от требуемой детализации и выбранной основы. Но не думаю, что займёт больше недели на модель + также несколько минут на каждую позу (если модель со скиннингом), либо + несколько десятков минут и до часа на позу (если модель будет трансформироваться под каждую позу без скиннинга с компенсацией искажений суставов).

    Если кратко, полный цикл такой: моделирование -> текстурирование -> скиннинг -> риггинг -> получение нужных поз -> рендеринг.
    По затратам, каждый следующий этап проще предыдущего. В ZBrush можно обойтись без скиннинга и риггинга, но постановка поз будет чуть дольше. Тут всё зависит от количества поз, если их реально много, то лучше потратить время на скиннинг, но зато потом клепать их пачками, если их можно перечислить по пальцам одной руки, то время на нормальный скиннинг себя может и не оправдать.

    Короче, диапазон очень большой и сильно зависит от ваших требований и бюджета.

    P.S.: Может лучше просто разместить заказ на фрилансе и не гадать тут?
    Ответ написан
    1 комментарий
  • [poser pro] Почему на 3D-модели появляются черные линии?

    SHVV
    @SHVV
    На сколько я помню Позер, там реально могут бть дырки, так как вся модель состоит из отдельных кусочков, состыкованных между собой. Я даже в некоторых случаях переносил модель в МАКС и сшивал всё в один меш,, чтобы таких косяков на рендере не было видно.
    Но это было давно и сейчас может отказаться не актуальным.
    Ответ написан
    3 комментария
  • Какие методы реализации браузерного 3d-редактора можете посоветовать (api, фреймворки...)?

    SHVV
    @SHVV
    Технология - фреймворки
    WebGL - Three.JS (есть даже пример редактора),..
    Flash - Away3D, Alternativa3D,..
    Unity3D - Unity3D.
    Ответ написан
    Комментировать
  • Как сделать вращение камеры в unity3d?

    SHVV
    @SHVV
    Не надо так делать, используйте углы Эйлера.
    Ответ написан
    Комментировать
  • Как загрузить геометрию mesh объекта из three.js в cannon.js?

    SHVV
    @SHVV
    Судя по всему:
    new Trimesh(vertices, indices);
    создаёт меш коллайдер из массива вершин и индексов треугольников.
    В three.js у меша есть геометрия (geometry), у окторой есть аналогичные массивы: vertices и faces. Только они состоят из объектов, а не чисел. Так что вам остаётся только развернуть массивы объектов в массивы чисел и скормить их cannon-у.
    Ответ написан
  • Чем и что отрендерить сцену на Python?

    SHVV
    @SHVV
    Если вам нужна качественная фотореалистичная картинка, можно посмотреть в сторону внешних рендереров, например, POV-Ray.
    Ответ написан
    Комментировать
  • Анимация бега 3D-модели на QML?

    SHVV
    @SHVV
    Скорее всего, нормально - никак. Для этого нужна поддержка скиннинга и скелетной анимации. QtQuick3D ничего этого не поддерживает. Всё-таки, - это не игровой движок, а всего-лишь простенькая графическая библиотека.
    Ответ написан
  • Как правильно наложить текстуру на каждую сторону модели?

    SHVV
    @SHVV
    Не работал с OSG, но судя по всему вы создаёте планарную проекцию текстуры на объект. Так что не удивительно, что они накладываются не очень хорошо.

    Не пробовали использовать текстурные координаты, загруженные из файла? Есть ли они там?
    Ответ написан
    Комментировать
  • Перевод 3D модели в код или как правильно перевести?

    SHVV
    @SHVV
    Тут есть список различных open-source g-code и toolpath генераторов для 2D и 3D фрезерования (milling) и печати.
    В целом, для 3-х осевого фрезера всё сводится к серии 2D картинок. То есть, модель режется на слои по оси Z и строится путь для фрезера по пустым областям, а для печати по полным. Но для фрезера нельзя резать то, что не прорезано уровнем выше. Так что надо это учитывать.

    Плюс надо учитывать возможность столкновения инструмента (и других частей фрезера) с деталью, строя промежуточные пути в обход торчащих элементов.

    А вообще стратегий миллинга довольно много разных - растровые, контурные, vortex. Плюс если у вас есть вращающиеся оси, то свободы становится значительно больше и обычный слайсинг уже не совсем подойдёт. Подобные комплексы весьма сложны и развиваются десятки лет (PowerMILL, например), оптимизируя все процессы для ускорения производства.
    Ответ написан
    1 комментарий
  • Каким образом в современных играх реализована настройка модели персонажа?

    SHVV
    @SHVV
    Я голосую за морфинг между несколькими заранее заготовленными модельками. UV координаты при этом должны быть у всех одинаковыми.
    Ответ написан
  • Бывает ли в продаже дешевая 3d камера?

    SHVV
    @SHVV
    Самый простой вариант - обычная веб-камера + ИК подсветка к ней. Уровень освещения будет примерно обратно пропорционален квадрату расстояния.
    Ответ написан
    3 комментария
  • Откуда взять 3D модели планет?

    SHVV
    @SHVV
    В Space Engine есть возможность экспортировать планеты.
    Ещё планеты поддерживат последняя версия Terragen-а, но насчёт экспорта я не уверен.
    Ответ написан
    Комментировать
  • Почему стоит заниматься 3D графикой?

    SHVV
    @SHVV
    Сам одно время подрабатывал 3Д графикой в рекламе и дизайне интерьеров. Брат до сих пор фрилансит в дизайне интерьеров. На жизнь хватит, но золотых гор не будет, разве что открыть свой бизнес в этой сфере. Есть ещё перспективы в гейм-деве и кинопроизводстве, но там спрос меньше, а требуемый уровень выше.
    Ответ написан
    Комментировать
  • Как расшифровать 3D фигуры в xml?

    SHVV
    @SHVV
    Это похоже на экструзию.
    То есть, рисуется 2Д фигура и выдавливается до нужной толщины.
    В вашем случае нарисован квадрат перечислением 2Д координат его вершин (x, y):
    <segments>
            <line>0.000, 0.000</line>
            <line>0.000, 0.001</line>
            <line>0.001, 0.001</line>
            <line>0.001, 0.000</line>
    </segments>

    И этому квадрату задана толщина (высота в 3Д):
    <shape thickness="0.018">
    И в конечном итоге всё это оттрансформированно матрицей преобразования:
    <matrix>
            0.000000000000003, 0.000000000000005, -0.055555555555555, -1.999500000000000, 
            0.000000000000000, -1.000000000000000, 0.000000000000000, -1.498750000000000, 
            -1.000000000000000, 0.000000000000000, 0.000000000000000, -1.998750000000000, 
            0.000000000000000, 0.000000000000000, 0.000000000000000, 1.000000000000000
    </matrix>

    Тут, если посмотреть внимательнее, правая колонка - сдвиг, а по диагонали - масштаб каждой из осей. Но в общем случае там ещё может быть и поворот.
    Ответ написан
    Комментировать
  • На чем написать 3D проектировщик?

    SHVV
    @SHVV
    Может всё-таки стоит посмотреть в сторону флеша? Он пока вроде более распространён, чем WebGL.
    Ответ написан
  • Как найти все точки проникновения/контакта двух боксов (прямоугольных параллелепипедов), зная координаты их вершин?

    SHVV
    @SHVV
    Думаю, вам стоит взять готовый опенсорсный движок и посмотреть, как опытные люди это делают.

    За основу всех более-менее сложных алгоритмов поиска пересечения выпуклых многогранников берётся "Теорема о разделяющей оси". Суть проста: если проекции многогранников на какую-нибудь прямую не пересекаются, то они не пересекаются в пространстве. Если такой оси нет, то пересекаются. Как таковых конечных точек пересечения у них при этом не будет, будет целый многогранник этих пересечений. Но для физического движка нужно выделить некоторое количество характерных точек и этот выбор будет зависеть от той оси, которую вы сами выберете. В большинстве случаев такой осью выбирают прямую, на которой пересечение проекций минимально.

    Какие оси надо проверять? Ведь их бесконечное количество.
    Это зависит от топологии. В общем случае достаточно проверять оси коллениарные нормалям всех граней многогранников (в этом случае мы ищем пересечение с гранью), и оси полученные векторным произведением каждого ребра одного многогранника с каждым ребром другого (пересечение ребро - ребро). Но, так как у Бокса очень много параллельниых граней и рёбер, то все их проверять нет смысла. Так как получится куча одинаковых осей.
    Итого получается, что нужно проверить 3 + 3 (грани) + 3 * 3 (пары рёбер) = 15 потенциальных разделяющих осей. В первом случае, необходимо потом будет найти пересечение грани с вершинами, и из тех вершин, что пересекают плоскость построить многоугольник и пересечь его уже в 2Д, получив от 1-й до 6-ти точек пересечения. Во втором случае ещё проще - ищем точку пересечения двух векторов.

    ПС: Лучше начинать собственный движок с более простых фигур - сфер и касюлей. У них функция пересечения на пару порядков проще.
    Ответ написан
    Комментировать
  • Вопрос по выводу gluLookAt функции в OpenGL?

    SHVV
    @SHVV
    Как вы написали, матрица преобразования — это матрица перехода от одного базиса к другому. Она может содержать как поворот, так и масштабирование и прочие линейные искажения.

    Одно из свойств матрицы преобразования — это то, что её строки являются векторами базиса новой системы координат. То есть, когда вы умножаете матрицу на вектор, вы последовательно умножаете скалярно исходный вектор и строки (вектора базиса), получая исходный вектор в новых координатах. Так как каждое скалярное произведение покажет, сколько того или иного базисного вектора есть в исходном векторе. Чтобы матрица преобразования была ортонормированной (содержать исключительно вращения), она должна состоять из взаимно перпендикулярных и нормализованных векторов.

    Итак, строки матрицы у нас — вектора нового базиса в координатах исходного базиса. Надо их найти.
    Один из векторов у нас известен — это направление взгляда, нормализуем его и записываем сразу в матрицу (для OpenGL ось взгляда — ось Z, потому записываем наш вектор в третью строку матрицы). Второй вектор ортогонален первому и некоторой примерной линии, направленной вверх. получаем его векторным произведением вектора взгляда и этого вспомогательного вектора. Получаем вектор, направленный вправо (или влево, в зависимости от порядка умножения). После нормализации записываем его в первую строку матрицы (в OpenGL ось X совпадает с осью X экрана и направлена вправо). Оставшийся вектор получаем векторным произведением уже полученных векторов и записываем во вторую строку матрицы (в OpenGL ось Y направлена вверх). Он должен получаться уже нормализованным.

    Но есть нюанс. Если вектор взгляда совпадает с вспомогательным вектором вверх, то их векторное произведение будет равно нулю и матрицу посчитать не получится.
    Ответ написан
    3 комментария