Главная » Статьи » Учебник: теория

Вывод текста и изображения на экран и в 3D.
Вывод текста и изображения

Panda3D включает в себя поддержку рендера текста на экране или в 3D. Он поддерживает все символы Unicode, так же можно легко отрендрить тексты в международные языки (в том числе Азиатские языки, когда использован нужный шрифт).

There are three interfaces for creating text, depending on your requirements: the TextNode, which is the fundamental text-rendering class and serves as the implementation for the other two, OnscreenText, a simple high-level wrapper around TextNode, OnscreenImage, the same as OnscreenText but now for images, and DirectLabel, which integrates with the rest of the DirectGUI system.

Международные наборы символов

По умолчанию, Panda3D предполагает, что текст, который вы будете выводить, по стандарту iso8859, и latin-1 на Linux. Это стандартный набор символов, где в 1-ом байте хранится один символ, поддерживает западно-европейские языки. Если вы хотите использовать другте языки, то вы должны изменить настройки Panda3D в файле Config.prc:

Code
text-encoding utf8

Шрифты

Panda3D может рендрить текст с указанным шрифтом. Если у вас стандартная Panda3D, то вы можете загружать шрифты в формате *.TTF, или ещё которые установлены по умолчанию. Пример:

Code
font = loader.loadFont('arial.ttf')

Для имени файла шрифта можно указывать как относительный, так и абсолютный пути.

Также шрифты можно сделать из *.EGG файла:

Code
egg-mkfont -o arial.egg arial.ttf

У Panda3D стандартно три шрифта: "cmr12.egg" - шрифт Roman, "cmss12.egg" - шрифт Sans-Serif, "cmtt12.egg", шрифт Teletypewriter-style фиксированной ширины.

Вывод текста

Объект OnscreenText - простая и удобная вещь для вывода текста на экран. Для использования этого объекта нужен экспорт его из соответствующего модуля. Это позволяет выводить текст быстро, но у него нет стольких возможностей как у DirectLabel. Используйте OnscreenText, когда вам нужно вывести простой тест быстро.

Code
from direct.gui.OnscreenText import OnscreenText
textObject = OnscreenText(text = 'my text string', pos = (-0.5, 0.02), scale = 0.07)

Объект OnscreenText наследуется от NodePath, поэтому над ним возможны стандартные действия как над NodePath. Когда вы хотите уничтожить объект используйте соответствующий метод:

Code
textObject.destroy()

Вот список параметров этой функции. Параметры по умолчанию вы можете изменить в файле OnscreenText.py.
pos позиция текста x и y на экране.
scale размер текста. Он должен быть float (и это обычно небольшой число, около 0.07) или двойным картежом, для конкретизации различного x, y масштаба.
fg (r, g, b, a) цвет текста ( r - красный, g - зелёный, b - голубой, a - альфа).
bg (r, g, b, a) цвет фона текста.
shadow (r, g, b, a) цвет тени позади текста.
frame (r, g, b, a) цвет рамки вокруг текста.
align расположение текста: TextNode.ALeft, TextNode.ARight или TextNode.ACenter.
wordwrap ширина текста.
font шрифт текста.
parent привязка объекта к родителю parent.
mayChange если true текст и его свойтсва можно изменять, иначе нет (для лучшей оптимизации памяти). По умолчанию это false.

Объект OnscreenImage работает также, но он показывает изображение на экране вместо текста.

Вывод изображение

Объект OnscreenImage такой же, как и OnscreenText.

Code
from direct.gui.OnscreenImage import OnscreenImage
imageObject = OnscreenImage(image = 'myImage.jpg', pos = (-0.5, 0, 0.02))

Уничтожить объект:

Code
imageObject.destroy()

Вот список параметров объекта:
pos позиция изображения x, y, z на экране или в 3D (для этого надо установить render, а ни render2d).
scale размер изображения, тип float.
hpr поворот изображения h, p, r.
color цвет изображения (r, g, b, a).
parent установка родителя parent.

Внимание: Чтобы использовать прозрачность вы должны установить это параметр, иначе прозрачные части будут чёрного цвета:

Code
from pandac.PandaModules import TransparencyAttrib
self.myImage=OnscreenImage(image = 'myImage.png', pos = (0, 0, 0))
self.myImage.setTransparency(TransparencyAttrib.MAlpha)

Внимание: Поскольку GIF формат не поддерживается, вы должны использовать PNG и TGA форматы.

Категория: Учебник: теория | Добавил: BVOG (12.06.2010) | Автор: BVOG E
Просмотров: 5364 | Теги: вывод, кран, текста, изображения, OnscreenText, OnscreenImage, 3D | Рейтинг: 5.0/3
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Онлайн всего: 1
Гостей: 1
Пользователей: 0