如何在Three.js场景上放置2D文本?

如何在Three.js场景上放置2D文本?,three.js,Three.js,我有一个简单的3D场景,用JavaScript在标签中编写 我需要在Three.js场景上放置一个文本。这是我的密码: <html> <head> <title>First page.</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <

我有一个简单的3D场景,用JavaScript
标签中编写

我需要在
Three.js
场景上放置一个文本。这是我的密码:

<html>
    <head>
        <title>First page.</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <link href="/errordocs/style/general.css" rel="stylesheet" type="text/css">            
        <script src="https://threejs.org/build/three.js" crossorigin="anonymous"></script>    

        <style>
            body { margin: 0; }
            canvas { width: 100%; height: 100% }
        </style>
    </head>

    <body>
        <script>
            var scene, camera, renderer;
            var geometry, material, mesh;

            init();

            function init() {                    
                scene = new THREE.Scene();
                scene.background = new THREE.Color( 0x222222 );
                camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 0.01, 100 );
                camera.position.z = 1;

                geometry = new THREE.SphereGeometry( 0.1, 20, 20 );
                material = new THREE.MeshNormalMaterial();
                mesh = new THREE.Mesh( geometry, material );
                scene.add( mesh );

                renderer = new THREE.WebGLRenderer( { antialias: true } );
                renderer.setSize( window.innerWidth, window.innerHeight );
                document.body.appendChild( renderer.domElement );
            }
        </script>
    </body>
</html>

第一页。
正文{页边距:0;}
画布{宽度:100%;高度:100%}
var场景、摄影机、渲染器;
变量几何、材质、网格;
init();
函数init(){
场景=新的三个。场景();
scene.background=新的三种颜色(0x2222);
摄像头=新的三个透视摄像头(50,window.innerWidth/window.innerHeight,0.01100);
摄像机位置z=1;
几何学=新的三种。球墨法(0.1,20,20);
材质=新的三个。MeshNormalMaterial();
网格=新的三个网格(几何体、材质);
场景。添加(网格);
renderer=new THREE.WebGLRenderer({antialas:true});
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
}
问题

如何在
Three.js
场景上放置2D文本


实现预期结果的方法不止一种

  • 对于大多数情况,将其用作标签或注释渲染器可以提供适当的结果。好的是,你可以很容易地用CSS为你的文本设置样式。例如,在本例中使用渲染器:

  • 另一种方法是在画布上渲染文本,然后将其用作实例的纹理。使用精灵可以在其他3D对象后面混合或隐藏标签,而这些3D对象不适用于基于HTML/CSS的解决方案

  • 我知道您特别要求使用2D文本,但对于3D文本,您可以使用它生成网格

  • 我选择了解决方案。就这么简单:

    
    从“@seregpie/three.text sprite”导入TextSprite;
    设sprite=new-THREE.TextSprite({
    text:'文本必须在此处呈现…',
    对齐:“中心”
    fontFamily:“Arial,Helvetica,无衬线”,
    尺寸:28,
    颜色:'#ffffff'});
    场景。添加(精灵);
    
    Hi@MauriceNino!对不起,您将我的帖子编辑到该表单的目的是什么?代码片段不起作用,代码似乎坏了…嘿,对不起,我以为这是你的问题,代码不起作用。我的错误。如果您愿意,可以随意将其还原,甚至更好→ 让它发挥作用。可执行代码段是获得更多答案的好方法。