Физически реалистичные наклейки - PullRequest
5 голосов
/ 02 марта 2010

Я нахожусь в процессе разработки механизма визуализации для компании, в которой я работаю. Мы создаем наклейки для наружной части самолета. Таким образом, мы хотели бы иметь возможность визуализировать наши наклейки на самолет, который мы поддерживаем.

Так вот в чем проблема: в реальной жизни, если бы я применял наклейки на внешней стороне самолета, я платил, выбирал позицию якоря (скажем, в центре левой стороны фюзеляжа), а затем работал от там, позволяя наклейке обернуть вокруг корпуса самолета, как он считает нужным. Теперь, конечно, мы отображаем «изображение» 2-й надписи на трехмерную поверхность, поэтому при обтекании обшивки самолета будут возникать некоторые искажения, но это ожидается и учитывается в оригинальном дизайне.

Однако я пытаюсь воспроизвести это в 3d. Я пробовал следующие методы:

UV Mapping - Развертывание модели, столь же сложной, как то, что у нас есть, будет чрезвычайно трудным и кажется немного излишним. Сторона самолета близка к плоскости, поэтому кажется, что более простой метод «проекции декаля» будет работать лучше

Cube Mapping - это приближается, действительно очень близко, однако, так как переводная картинка распространяется на грани сбоку самолета, в какой-то момент грани на верхней части модели начнут отображаться на верхнюю часть карта куба ... и тогда мы получаем сдвиг .....

Есть идеи? Как лучше всего это сделать, на данный момент я не настроен на OpenGL против DirectX, поэтому ответ от любого из них будет работать нормально.

Ответы [ 4 ]

5 голосов
/ 03 марта 2010

Может быть, я упускаю что-то очевидное ... но вы не можете просто использовать проекционное наложение текстуры?

Конечно, недостатком является потенциально чрезмерное искажение, когда угол между вашим проектом и нормалью поверхности приближается к 90 градусам.

Помимо этого, почему разворачивание УФ-излучения является таким плохим планом? Если текстуру модели деформировать, это будет довольно простым решением. Microsoft предоставляет очень полезный инструмент для распаковки здесь .

1 голос
/ 02 декабря 2014

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

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

Вы можете просто взять вершину в вашей сетке и A * или пройти от этой вершины ко всем близлежащим вершинам, считая геодезическое расстояние и вычисляя UV таким образом. Это не совсем точно, но в вашем случае это может быть достаточно.

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

http://en.wikipedia.org/wiki/Multidimensional_scaling

1 голос
/ 02 марта 2010

Я бы рекомендовал использовать цилиндрическую текстурную карту . Если вы не пытаетесь нанести на карту край (то есть: на крыло и т. Д.), Это должно работать очень хорошо. Для надписи на фюзеляже это должно прекрасно работать и быть очень простым в реализации.

0 голосов
/ 02 марта 2010

Я полагаю, что современное состояние этого типа размещения надписей - это координаты ExpMap Райана Шмидта. Здесь задействовано несколько операций с сеткой, но их отнюдь не сложно реализовать. Вот ссылка на статью SIGGRAPH: http://www.unknownroad.com/publications/ExpMapSIGGRAPH06.pdf

...