forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D/GUI (http://forum.boolean.name/forumdisplay.php?f=167)
-   -   Текст в текстуру (http://forum.boolean.name/showthread.php?t=17865)

SergSS 11.02.2013 13:17

Текст в текстуру
 
Добрый день! Вопрос в следующем: Есть необходимость вывести 2d текст поверх изображения и загнать его (изображение с текстом) в текстуру(текстуру в материал, материал на объект). Возникает вполне логичный вопрос - "КАК?". Вся работа с текстом в Unity, что видел, сводится либо к 3d тексту, либо к работе с гуи. Но можно ли гуи наложить как текстуру? Поиск по Интернету пока результатов не дал. Буду благодарен за любой совет или ссылку!

Lestar 11.02.2013 13:37

Ответ: Текст в текстуру
 
NGUI умеет.

pax 11.02.2013 14:05

Ответ: Текст в текстуру
 
3D текстом вполне можно. В рендертекстуру. Правда не уверен на счет стандартного шейдера.

SergSS 11.02.2013 14:25

Ответ: Текст в текстуру
 
NGUI попробую посмотреть сам, но если не сложно - можно простейший пример кода?
А рендер текстура - Как это сделать в UNITY. Тоже норм примеров найти не могу...(((

П.С. Пишу на C#

pax 11.02.2013 14:38

Ответ: Текст в текстуру
 
RenderTexture:
1. Дополнительный слой специально для картинки.
2. Камеру отдельную выключенную, рендерящую этот слой.
3. фон и 3d текст на этот слой.
4. камере назначить рендертекстуру (вероятно созданную кодом).
5. camera.Render() - рендеринг в текстуру.
6. Текстура метериалу, материал объекту

Можно например еще
6. RenderTexture.active = наша рендертекстура
7. Texture2d.ReadPixels() для чтения в обычную текстуру
8. RenderTexture.active = null;

seaman 11.02.2013 20:32

Ответ: Текст в текстуру
 
Элементарно без RenderToTexture. Но с подготовленным атласом шрифта.
Adding Text-To-Texture at Runtime in Unity3D Without Using Render Texture

pax 12.02.2013 09:07

Ответ: Текст в текстуру
 
Ну собственно можно и с 3d text без рендертекстуры. Можно вызвать camera.Render() и в основной буфер в Update например, считать с него пиксели, а потом очистить Z буфер например через GL.Clear или другой камерой. И так же п. 7. непосредственно после рендеринга. Камере этой можно задать pixelRect, чтобы не рендерить на весь экран.

UPD: Правда что-то в Unity 4 такой способ не работает... точнее работает с использованием WaitForEndOfFrame


Часовой пояс GMT +4, время: 17:36.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot