reckfellENGINE

Текст в 3D: подпись, геометрия или интерфейс

Выбрать Label3D или TextMesh, настроить размер и перекрытие стенами, не спутать текст с UI.

На этой странице

Выбрать представление

ЗадачаИнструментОграничение
Имя персонажа, подпись предметаLabel3DТекст находится в мире; это не Control с фокусом и раскладкой
Объёмные буквы вывескиTextMesh в MeshInstance3DРеальная геометрия глифов; коллизия создаётся отдельно
Меню, поля ввода, кнопкиControl; при необходимости SubViewport с выводом в мирНужны раскладка, фокус и маршрутизация ввода; Label3D их не предоставляет

Запустить подпись над объектом

Используйте три полных файла из примера камеры: LodVisual3D.cs, ViewLabMeshes.cs и ViewLab3D.cs. Нужны SDK 1.0.0, net10.0, dotnet build и ViewLab3D.cs на Entity3D-корне .rscene. Оставьте UseWall=false до запуска. Над объектом появится Reckfell; стрелки изменяют дистанцию и ракурс.

Caption создаётся как Label3D: FontSize=48, PixelSize=0.008, Billboard=Enabled. Размер в мире определяется и шрифтом, и PixelSize, и трансформацией. FontSize сам по себе не задаёт размер экранной надписи. У обычной перспективной камеры дальний текст становится меньше.

Подпись Label3D над белой сферой в реальном кадре движка

Кадр получен в актуальном локальном runtime с дистанцией 6 и без видимой стены. Это изображение игры, а не интерфейса редактора.

Размер, поворот и стены

  • Billboard=Enabled поворачивает подпись к камере. FixedY сохраняет вертикальную ось; это отдельный режим, полезный для стоящих в мире вывесок.
  • FixedSize=true уменьшает зависимость видимого размера от дистанции. Проверка на дистанциях 6 и 18 сохранила приблизительно одинаковую площадь текста при неизменных FOV и viewport. Это не обещание одинаковых пикселей при другом FOV, DPI или размере окна.
  • NoDepthTest=false позволяет стене скрывать текст. Значение true делает подпись видимой сквозь стену; используйте его осознанно для маркеров.

Изменение Text ставит обновление в очередь. Не проверяйте готовые пиксели в той же строке, где изменили текст. В тесте ожидался завершённый кадр. Для русского и других языков назначьте шрифт с нужными глифами; наличие латинской надписи не доказывает покрытие всех языков.

Сделать объёмные буквы

Полный вспомогательный файл ниже содержит ViewLabMeshes.Text. Он возвращает TextMesh с FontSize=64, PixelSize=0.01 и Depth=0.15. Назначьте результат свойству Mesh нового MeshInstance3D, задайте MaterialOverride и позицию, затем добавьте экземпляр в уровень. Сам ресурс TextMesh без MeshInstance3D не появится в кадре. Основной ViewLab3D создаёт Label3D; TextMesh не добавляется в нём автоматически.

ViewLabMeshes.cs
C#
using Reckfell;

public static class ViewLabMeshes
{
    public static StandardMaterial3D Material(Color color) => new()
    {
        AlbedoColor = color,
        ShadingMode = BaseMaterial3D.ShadingModeEnum.Unshaded
    };

    public static MeshInstance3D Box(Vector3 size, Color color) => new()
    {
        Mesh = new BoxMesh { Size = size },
        MaterialOverride = Material(color)
    };

    public static TextMesh Text(string text) => new()
    {
        Text = text,
        FontSize = 64,
        PixelSize = 0.01f,
        Depth = 0.15f
    };
}

Геометрия глифов TextMesh с текстом 3D

Для этого отдельного кадра создан MeshInstance3D с Mesh=ViewLabMeshes.Text("3D"), Position=(0,1,0), белым материалом из Material(Colors.White) и камерой на дистанции 6; подпись, обе модели и пол скрыты. Фронтальный вид не показывает толщину наглядно: нативная проверка отдельно подтвердила геометрию глифов и глубину AABB больше 0.14.

Depth задаёт толщину геометрии, а не физическую форму. Label3D.GenerateTriangleMesh() не заменяет TextMesh: у проверенной непустой подписи он создал только прямоугольник из двух треугольников. Это не контуры букв и не автоматически добавленный коллайдер.

Диагностика

ПроблемаЧто проверить
Текст слишком малPixelSize, FontSize, масштаб, расстояние и FOV
Надпись читается сбокуBillboard и ориентацию Entity3D
Текст виден сквозь препятствияNoDepthTest; для обычной подписи оставьте false
Вместо букв квадратыПокрытие глифов выбранным шрифтом
Нельзя нажать на надписьLabel3D не принимает ввод как кнопка; нужен отдельный UI или игровой hit test
Объёмные буквы не видныMeshInstance3D в дереве, назначенный Mesh, трансформацию, материал и активную камеру

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

Label3D API · TextMesh API

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.