LINUX.ORG.RU

Как в blender'е наложить плоский текст на плоскую поверхность?

 , ,


0

3

Blender 2.63. Вопрос в заголовке.

Чтобы было более понятно что именно мне нужно, допустим, что у нас есть кубик. На одной из его граней нужно написать плоский текст, причём так, чтобы он стал частью решётки этой грани. То есть в результате часть треугольников грани будет иметь цвет кубика, а часть - цвет текста, но лежать они будут все в одной плоскости.

Много гуглил, но не помогло.

Deleted

Ответ на: комментарий от yrttyr

Хочешь странного.

Почему странного? По моему, всё вполне логично. Нужно просто написать текст без использования текстур и чтобы при отображении гарантированно не возникало проблем с Z-буфером.

Deleted
()
Ответ на: комментарий от gavlig

почему нельзя наложить текстурой?

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

Deleted
()
Ответ на: комментарий от Deleted

так текст в каком виде должен быть? геометрией что ли?

gavlig ★★★
()

Если бы выводил картинку блендером, то можно было бы использовать для имитации свойство Z Offset. А так, похоже, только руками растянуть из сетки с текстом плоскость.

thesis ★★★★★
()

перечитал ещё раз пояснение. Сетка(которая решётка), на которую будет накладываться текст, многополигональная? Если так, то можно нарисовать на грани текст с помощью weight paint(то есть придать нужным вершинам вес, с помощью которого можно будет отличить те, которые принадлежат тексту). Второй вариант - скульптом текст «выдавить» из плоскости.

gavlig ★★★
()

Не знаю, как эта операция называется в блендере и есть ли там готовая, но делается это примерно так:

  • создаешь поверхность в виде сетки полигонов помельче (или нурбсами какими-нибудь),
  • создаешь полигональный текст, придав ему небольшую толщину, удобную для последующей операции,
  • утапливаешь текст в поверхности на половину его толщины и делаешь логическое вычитание геометрии текста из геометрии плоскости, в результате чего получаешь выдавленный в плоскости текст,
  • отмечаешь все «продавленные» фейсы, не находящиеся на поверхности первоначальной плоскости и делаешь им т.н. dissolve, построив таким образом вместо выдавленного текста новые фейсы в требуемой плоскости, что выглядит примерно так:
__ _ _ __
  |___|    ->  ‒‒‒‒‒‒‒‒‒

(к сож., под рукой сейчас нет даже Wings3D, в котором это можно показать в картинках)

blexey ★★★★★
()

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

MikeB ★★★★
()

В общем, как я понял, нет простого способа сделать то, что мне нужно. Я просто сделал трёхмерный текст небольшой толщины и разместил его на поверхности грани. Для моих целей этого хватит.

Вообще, было бы идеально, если бы blender мог нормально делать булевы операции над плоскими объектами. Сейчас они выдают совершенно неожиданные результаты: например, куб & плоскость = трёхмерная_поверхность_с_вдавленным_участком...

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Результаты вполне ожидаемые и расписаны в доках буквально по каждому пакету трехмерного моделирования, которые умеют делать булевы операции над геометрией.
Аналогия точно такая же, как в случае булевых операций в плоскости над прямой линией и плоской фигурой: в результате ведь получается не образованные на линии в месте пересечения вертексы, а новая плоская фигура.
Просто упомянутая мной выше операция dissolve умеет удалять лишнюю образованную геометрию из результата, оставляя как раз те самые новообразованные вертексы в нужных местах.

blexey ★★★★★
()
Ответ на: комментарий от blexey

Результаты вполне ожидаемые и расписаны в доках буквально по каждому пакету трехмерного моделирования, которые умеют делать булевы операции над геометрией.
Аналогия точно такая же, как в случае булевых операций в плоскости над прямой линией и плоской фигурой: в результате ведь получается не образованные на линии в месте пересечения вертексы, а новая плоская фигура.

Если на плоскости найти пересечение прямой и, например, круга, то может получиться всего три варианта:

  • вообще ничего (пустое множество точек)
  • точка;
  • отрезок.

Любые другие варианты нелогичны. Точно так же, при пересечении трёхмерной фигуры и плоскости никак не может получиться трёхмерная фигура*.

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

Смысл я понял, спасибо. Просто мне не хочется вручную удалять ненужные треугольники 8).

P.S. * Случай с хитро свёрнутыми пространствами мы не рассматриваем...

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

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

blexey ★★★★★
()
Ответ на: комментарий от blexey

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

Для человека, не знакомого с компьютерной трёхмерной графикой, это кажется сильно нелогичным.

Deleted
()

1. Растяни объект с текстом вдоль горизонтальной поперечной оси, чтобы буквы стали сильно выступать вперёд и назад.
2. Ковертни текст в mesh.
3. Сделай дубликат кубика.
4. Расположи кубик и mesh с текстом так, чтоб они пересекались в нужном месте.
5. Используй на кубике модификатор Boolean с текстом в качестве оператора чтобы выбрать пересечение двух объектов.
6. На образовавшемся после Boolen mesh'е примени Solidify если тебе нужна дополнительная толщина.

Так же отмечу что Boolean в Blender работает качественно, а теперь и быстро (после того как библиотеку Carve впихнули). Неожиданные результаты возникают из за того что ты хочешь заставить работать его так, как он не работает. Не забывай про направление нормалей у фэйсов и про замкнутость поверхности над которой производишь операцию (дырки).

indaair
()
Ответ на: комментарий от Deleted

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

indaair
()
Ответ на: комментарий от indaair

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

А внутри кубика не осталось ошмётков от 3D-текста? У меня получилось только вот так: http://img600.imageshack.us/img600/1395/boxandtext.png.

Deleted
()
Ответ на: комментарий от indaair

Ошмётки остались, как у тебя, но я смог легко удалить их выделив вертексы, находящиеся внутри куба.

А автоматом вообще это никак не сделать? Ну или расскажи как их быстро руками уничтожить, а то я умею только по одному выделять...

Deleted
()
Ответ на: комментарий от Deleted

Как сделать автоматом я пока не придумал, но при знании Python точно можно.
Быстро уничтожить руками так:
1. Переключись в Wireframe, как на твоём скриншоте (Z).
2. Нажми C и выдели с помощью этого инструмента ненужные вертексы. (Можешь использовать ещё B.)
3. Правой кнопкой мыши подтверди выделение.
4. Удали вертексы (Delete или X).
Ещё ты можешь выделять замкнутые петли из вертексов с помощью Shift+Alt+ПКМ.

indaair
()
Ответ на: комментарий от indaair

Чтобы такого не было, кубик надо создавать не из восьми вертексов, а чтобы его сторона была сеткой подходящего размера.

blexey ★★★★★
()
Ответ на: комментарий от blexey

Согласен, но скоро булевы операции будут поддерживать bmesh n-гоны (надеюсь) и мы заживём лучше.

indaair
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.