Применение 2D-сетки к 3D-поверхности

У меня очень сложная 3D-поверхность, к которой нужно применить 2D-сетку. Мне нужно что-то вроде инструмента Solidworks Wrap: http://www.rickyjordan.com/2009/01/the-solidworks-secret-weapon-the-wrap-tool.html

Из-за сложности 3d-поверхности стандартная UV-развертка текстуры не работает. Например, если я хочу отобразить букву O, а на трехмерной поверхности есть выпуклость там, где должна быть середина буквы O, буква O должна обтекать выпуклость. Однако сопоставление E с той же поверхностью должно привести к тому, что средняя линия на E будет течь вверх и над выпуклостью.

Любые идеи о любых других программах/алгоритмах, обеспечивающих эту поддержку?


person Timothy Baldridge    schedule 02.06.2010    source источник


Ответы (1)


Если вы можете визуализировать свои 2D-материалы в текстуру, вы можете использовать проективное наложение текстур.

person genpfault    schedule 02.06.2010
comment
К сожалению, это не сработает. Рассмотрим такой случай: допустим, у меня есть самолет со стойкой, торчащей сверху. Использование проективного наложения текстуры для отображения буквы E поверх этого приведет к тому, что средняя линия буквы E будет растянута по бокам столба, что исказит исходное изображение. В конце концов, мне нужно, чтобы площадь поверхности всех полигонов была одинаковой до и после отображения. - person Timothy Baldridge; 02.06.2010
comment
@Timothy: Как SolidWorks решает эту проблему в таком случае? Я не вижу каких-либо экстремальных примеров скриншотов, кроме обертки, похожей на цилиндрическую проекцию. - person Xavier Ho; 03.06.2010
comment
на самом деле, после дальнейших исследований, это не так. Он может сопоставлять 3D-сетку только с плоскими поверхностями или с одним патчем кривой. - person Timothy Baldridge; 03.06.2010
comment
@Timothy: Тогда ваш проблемный домен значительно уменьшится! Посмотрите на проекцию UV-пространства и NURBS-координаты, и я уверен, что вы туда доберетесь. - person Xavier Ho; 04.06.2010
comment
Вот в чем дело... Думаю, я оговорился. Solidworks не может выполнить эту операцию, но мне нужно сделать это в моем пользовательском коде. Мне нужно иметь возможность сопоставить 2D-сетку с некомпланарной 3D-сеткой. Честно говоря, я искал и искал, и не нашел ответа на эту проблему. - person Timothy Baldridge; 04.06.2010