java - libGDX 使用贴花到面向 3d 的相机绘制文本

标签 java text 3d libgdx draw

我有一个绘制贴花的工作代码:
初始化:

Decal decal = Decal.newDecal(1, 1, 
new TextureRegion(new Texture(Gdx.files.internal("2d/gui/badlogic.jpg"))) );
            decal.setPosition(10, 10, 10);
            decal.setScale(3);
            decals.add(decal);

绘制方法:

for (int i = 0; i < decals.size; i++) {
        Decal decal = decals.get(i);

        decal.lookAt(stage3d.getCamera().position, stage3d.getCamera().up);

        batch.add(decal);
    }
batch.flush();

我有一个用于在 3d 中编写文本的工作代码:
绘制方法:

spriteBatch.setProjectionMatrix(tmpMat4.set(camera.combined).mul(textTransform));
spriteBatch.begin();
font.draw(spriteBatch, "Testing 1 2 3", 0, 0);
spriteBatch.end();

但是我很难制作一个对开的文字。

谢谢

最佳答案

我不会尝试 Decal 方法,因为它不是为文本设置的。 SpriteBatch 已经为文本设置好了。

(Decal 方法理论上可以执行得更好,因为您不需要为每个文本字符串调用单独的绘制调用。但是,您必须推出与 Decals 兼容的自己版本的 BitmapFont 和 BitmapFontCache。当然,如果您这样做了,您可以提交拉取请求并将其添加到 libgdx。)

SpriteBatch 代码看起来很眼熟。 :) 基本上您需要做的是修改 textTransform 矩阵,使其旋转一个对象以面对相机。 SpriteBatch 设置为绘制面向 Z 方向的扁平物体。所以你需要旋转一个 Z vector 来面对相机。

首先,您需要一个可以重复使用的 Vector3。

private static Vector3 tmpVec3 = new Vector3();

然后你想找到从文本中心指向相机的 vector 。我假设您将文本在 3D 空间中的位置存储在名为 textPosition 的 Vector3 中:

tmpVec3.set(camera.position).sub(textPosition); 
//tmpVec3 is now a vector pointing from the text to the camera.

现在您可以定位对象的矩阵,然后像这样旋转它以面向相机:

textTransform.setToTranslation(textPosition).rotate(Vector3.Z, tmpVec3);

现在您可以像在您发布的代码中那样使用 textTransform 了。确保将 BitmapFont 的对齐方式设置为 HAlignment.center,否则文本将围绕文本字符串的左端而不是中心旋转。您可能还想将 integer 参数设置为 false 以进行 3D 绘图。

关于java - libGDX 使用贴花到面向 3d 的相机绘制文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28245030/

相关文章:

java - 程序终止,没有任何错误

java - Log4j 解析错误在 SMTPAppender 上添加 triggeringPolicy

mysql - 如何只更新 mysql 中文本条目的一部分?

linux - 将文本从 nano 编辑器复制到 shell

c++ - 如何为 LookAt 转换获取正确的 Up vector ?

google-chrome - Threejs 加载器在 Chrome 中无法工作

java - JSP 和 mysql 抛出 java.lang.classNotFoundException :com. mysql.jdbc.driver

java - 通过 java 向 Minecraft 服务器发送命令

css - 如何在 css(或 scss/sass)中为文本添加渐变边框

algorithm - 寻找体素化策略的一些指示