Как сделать текст в блендере

Текст в Blender Game Engine

В этом уроке Вы узнаете, как добавлять текст в игру, изменять его цвет, размер, шрифт… Как переносить длинные строки текста с помощью скрипта, а также научитесь создавать счетчик боеприпасов.

Добавление текста

Blender может использовать текст в режиме реального времени в игровом движке. Создайте новую сцену, перейдите на вид из камеры, расположите 3D-курсор в левом верхнем углу и добавьте объект Text. Скорее всего выровняется он относительно глобальных координат. Вы можете вручную повернуть его, но лучше перейти в настройки (User Preferences) и на вкладке Editing изменить опцию Align To на View. Таким образом вновь созданные объекты будут выравниваться относительно текущего вида, а не глобальных координат. Теперь запустите игру (P) и вы увидите в ней Ваш текст:
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

Изменение разрешения шрифта

Не трудно заметить, что качество надписи оставляет желать лучшего. Мы может улучшить его двумя способами. Вы можете отдалить текст от камеры и увеличить его в размерах (при необходимости) или же написать небольшой скрипт на Python. Лучше использовать второй способ 🙂

Добавьте окно Text Editor, создайте новый файл с названием “text_res” и вставьте в него следующий скрипт:

cont = bge.logic.getCurrentController() own = cont.owner own.resolution = 5

Не снимая выделения с текста, перейдите в окно Logic Editor. Добавьте сенсор Always и подключите его к контроллеру Python. Для контроллера укажите использовать скрипт под названием “text_res“. Запустив игру Вы заметите что текст стал значительно лучше выглядеть. Изменяйте значение resolution до тех пор, пока не достигните желаемого результата, но не устанавливайте слишком высокие значения, иначе игра начнет подтормаживать. Значение 1 является разрешением по умолчанию. Начинайте со значения 2 и так до достижения результата:
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере
Так значительно лучше:
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

Настройка внешнего вида шрифта

Вы можете изменить цвет шрифта изменив цвет объекта. Для этого перейдите на вкладку Object и измените параметр Object Color. Сам шрифт можно изменять на вкладке шрифта:
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

Добавление текста в игру (HUD)

Теперь, когда мы знаем как добавлять и настраивать текст займемся созданием игровой сцены, в которой будет присутствовать Head-Up Display (HUD). Также, Вы узнаете как форматировать длинные строки текста (создавать переносы) при помощи Python и логических блоков.

Когда Вы откроете файл, то заметите что в нем уже присутствуют камера и куб из предыдущего урока. Также, для куба и камеры была добавлена анимация ходьбы, чтобы перемещение по сцене было более реалистичным. На вкладке рендера частота обновления установлена равной 60 кадров в секунду для более плавной анимации.

Нажмите P, чтобы запустить игру. Перемещение по ней производится при помощи W,A,S,D + мышь, а также можно приседать с помощью Ctrl.

В центре сцены находится коробка с боеприпасами. Как только Вы ее подберете, она исчезнет. Нашей целью будет выводить на экран количество собранных боеприпасов. Для этого нам понадобится новая сцена, которая будет выступать в качестве HUD:
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере
Переименуйте новую сцену в “HUD“. Перейдите на вид спереди и добавьте в сцену камеру. Сместите камеру в сторону от центра оси координат. Теперь перейдите на вид из камеры и добавьте слева вверху текст, как мы делали это в начале урока. Измените надпись на “Ammo:” и при желании настройте разрешение, цвет и шрифт для текста. Затем продублируйте надпись, сместите ее немного вправо и измените ее на “0“. Этот второй текст будет выступать в роли счетчика каждый раз, когда куб (наш персонаж) будет соприкасаться с боеприпасами.

С выделенной надписью “0” в окне Logic Editor на панели свойств добавьте для него новое свойство “Add Text Game Property“. Измените тип на Integer (целое число). После этого займемся настройкой вывода HUD в сцену с игрой:
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере
Переключитесь на сцену с игрой и выделите камеру. В окне Logic Editor соедините сенсор Always, контроллер And и актуатор Scene. Измените режим актуатора на Add Overlay Scene и укажите использовать сцену HUD:
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере
Теперь запустите игру и в ней Вы должны увидеть созданный текст в сцене HUD:
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере
Выделите коробку с боеприпасами в центре сцены. Вы заметите что у нее уже присутствуют логические блоки отвечающие за ее вращение и исчезновение при столкновении с чем-либо.

Добавьте актуатор Message и подключите его к тому же контроллеру, что и сенсор Collision. В поле Subject введите “ammo“. Теперь при столкновении с персонажем боеприпасы будут исчезать и отправлять сообщение “ammo“:
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере
Переключитесь на сцену HUD и выберите счетчик. Добавьте сенсор Message и в поле Subject введите “ammo“. Подключите его к контроллеру And, а контроллер к актуатору Property. Измените его режим на Add, Property на Text и установите Value равным 1. Вся эта связка добавляет единицу к переменной Text когда получает сообщение “ammo”:
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере
Вернитесь в сцену с игрой, запустите ее и подберите коробку. Счетчик должен измениться с 0 на 1. Вы можете продублировать коробку с припасами несколько раз, расположить ее в разных частях сцены и попробовать собрать их все.

Перенос слов

Если в Вашей игре присутствуют длинные диалоги, то скорее всего Вы захотите выводить их параграфами. Можно сделать это вручную, добавляя “\n” в код скрипта или же использовать для этих целей отдельный модуль. С помощью этого модуля можно взять длинные строки и разделить их на отдельные линии определенной длины. Использование моноширинных шрифтов дает наилучший результат, так как длина линии определяется по количеству символов в ней, а не по ширине линии в пикселях.

Перейдите в сцену HUD. Чуть ниже надписи “Ammo” добавьте новый объект Text. Если нужно, отредактируйте разрешение. На вкладке шрифта измените шрифт на моноширинный, например Courier. В окне Logic Edotor добавьте новое свойство “Add Text Game Property” и оставьте тип String (строка). Создайте новый текстовый файл, назовите его “text_wrap” и вставьте в него следующий скрипт:

import textwrap cont = bge.logic.getCurrentController() own = cont.owner startmessage = «Welcome to this tutorial on text in the game engine.» own[«Text»] = textwrap.fill(startmessage, 20)

Добавьте сенсор Always и соедините его с контроллером Python, в котором указан скрипт “text_wrap“. Запустите игру и посмотрите на результат. Переменная startmessage хранит наш текст, который нужно вывести. Переменная own[“Text”] изменяет объект текст и с помощью функции textwrap.fill(startmessage, 20) выводит его строками по 20 символов:
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере
Этот текст будет отображаться на экране на протяжении всей игры. Очевидно что в этом нет нужды, поэтому его нужно убрать по истечению некоторого времени.

Выделите надпись и добавьте для нее сенсор Delay, контроллер And и актуатор Visibility. Delay установите равным 200, а в актуаторе Visibility отключите пункт Visibility. Эта связка говорит, что после 200 “тиков” (по умолчанию 60 “тиков” = 1 секунда) надпись исчезнет с экрана. Запустите игру и проверьте работу.
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере
На этом урок закончен! Вы также можете использовать любые другие функции по работе с текстом: capitalize(), lower(), upper() и т.д.

Источник

Blender Basics 4-rd edition/Chapter 10- Adding 3D Text

Материал из Blender3D.

Содержание

Глава 10: Добавление 3D Текста

Автор: James Chronister
Оригинальный перевод: Юлия Корбут aka Balista
Переработка текста: Азовцев Юрий aka gumanoed

Настройки 3D Текста в Blender

Панель Shape:
Установки качества отображения шрифта (Resolution) и параметры заполнения (Fill).

Панель Geometry:
Наиболее часто используемые настройки: Offset сделает текст несколько более толстым; Extrude создаст объем текста (глубину); bevel сглаживает углы объемного текста. Вы можете использовать объект-кривую для задания формы основания и формы фаски.

Панель Font:
Здесь вы можете выбрать стиль шрифта, который хотите использовать. Шрифт Blender выбран по умолчанию, но вы можете изменить его на любой True-Type шрифт. Если вы используете Windows, шрифты обычно распологаются в каталоге C:\Windows. В Linux шрифты можно найти в каталоге /usr/share/fonts/truetype. Параметр Shear создаст эффект наклонного шрифта, по аналогии со стилем Italic. Поле «Text to Curve» можно использовать для изменения формы текста вдоль кривой.

Панель Paragraph:
Обычные параметры выравнивания и отступа.

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендереТекст на иллюстрации слева был экструдирован и к нему была добавлена фаска (bevel). Некоторые шрифты при экструдировании будут выглядеть лучше, чем другие. Экспериментируйте!
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

Размещение Текста на Кривой:

Blender может изменять форму текста в соответствии с формой Кривой (Curve), которой он следует. Для создания изогнутого текста нажмите Shift-«A», в меню «Add» выберите «Curve», затем «Path» (или любой другой вид кривой). Перейдите в Режим Редактирования и по желанию измените форму кривой. Затем выйдите из Режима Редактирования, нажав клавишу Tab.Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере
Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендереПосле создания текста, убедитесь что текст выделен, перейдите в раздел Font в Окне Свойств и найдите поле «Text on Curve». Щелкните в поле и из появившегося меню выберите нужную вам кривую. Текст примет форму выбранной кривой. Возможно, вам потребуется настроить расстояние между буквами для лучшего внешнего вида текста.

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

Другие типы кривых могут быть использованы для изменения формы текста точно таким же образом. Чтобы случайно не удалить кривую во время работы, переместите ее в неиспользуемый слой (клавиша «M»).Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

РобоЧувак Говорит:
Когда экструдируете текст для заголовков и лейблов будьте аккуратны с толщиной букв. Слишком толстый текст может оказаться плохо читаем.

Преобразование Текста в Меш

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

Если вы чувствуете некоторые ограничения при использовании стандартных инструментов создания 3D-текста в Blender (хотя с каждой новой версией они становятся все лучше и лучше), вам стоит попробовать использовать внешнюю программу для создания 3D-текста. Например Elefont. Она сохраняет файлы в формате DXF, которые затем могут быть импортированы в Blender.

Источник

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

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

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

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

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

vertex paint тоже не умеет?

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

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

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

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

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

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

В общем, спасибо за ликбез.

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

А можешь показать какая у тебя сетка получилась в случае с «плоским» текстом (левый кубик)?

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

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

Как сделать текст в блендере. Смотреть фото Как сделать текст в блендере. Смотреть картинку Как сделать текст в блендере. Картинка про Как сделать текст в блендере. Фото Как сделать текст в блендере

Спасибо! Результат получился именно такой, какой я изначально хотел.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *