Javascript x=0 y=0 z=0时的3.js水平平面几何图形

Javascript x=0 y=0 z=0时的3.js水平平面几何图形,javascript,3d,three.js,Javascript,3d,Three.js,嗨,我有这个代码,画下面的图像 window.onload = function() { // init renderer var renderer=new THREE.WebGLRenderer(); canvas_width=side; canvas_height=side; renderer.setSize(canvas_width,canvas_height); document.body.appendChild(renderer.domEleme

嗨,我有这个代码,画下面的图像

window.onload = function()
{
    // init renderer
    var renderer=new THREE.WebGLRenderer();
    canvas_width=side; canvas_height=side;
    renderer.setSize(canvas_width,canvas_height);
    document.body.appendChild(renderer.domElement);

    // init scene and camera
    var scene=new THREE.Scene();
    var camera=new THREE.PerspectiveCamera(90,canvas_width/canvas_height,1,100);
    camera.position.y=5;
    camera.position.z=25;

    var texture = new THREE.TextureLoader().load( 'arrow.png' );
    var img = new THREE.MeshBasicMaterial( { map: texture } );

    // mesh
    mesh = new THREE.Mesh(new THREE.PlaneGeometry(25,25),img);
    mesh.overdraw = true;
    scene.add(mesh);

    // a light
    var light=new THREE.HemisphereLight(0xffffff,0x000000,1.5);
    light.position.set(1,1,1);
    scene.add(light);

    // render
    requestAnimationFrame(function animate(){
      requestAnimationFrame(animate);
      renderer.render(scene,camera);        
    })
}

但是我想水平而不是垂直地绘制平面几何体,而不是使用
mesh.rotation.x=THREE.Math.degToRad(-90)旋转它,要在x=0 y=0 z=0时获取此值:

所以

mesh.rotation.x=THREE.Math.degToRad(-90);
箭头将指向下方

以及:

mesh.rotation.x=THREE.Math.degToRad(90);
箭头将指向上


你能帮我吗

使用
.rotateX()
旋转几何体即可:

//初始化渲染器
var renderer=new THREE.WebGLRenderer();
画布宽度=window.innerWidth;
画布高度=window.innerHeight;
设置大小(画布宽度、画布高度);
document.body.appendChild(renderer.doElement);
//初始化场景和摄影机
var scene=new THREE.scene();
var摄像机=新的三视角摄像机(90,画布宽度/画布高度,1100);
摄像机位置y=5;
摄像机位置z=25;
var texture=new THREE.TextureLoader().load('https://threejs.org/examples/textures/uv_grid_opengl.jpg');
var img=新的三网格基本材料({
贴图:纹理,
侧面:三个。双面
});
//网孔
geom=新的三个平面几何体(25,25);
几何旋转(-Math.PI*0.5);//这就是你能做到的
网格=新的三个网格(geom、img);
mesh.overdraw=true;
场景。添加(网格);
//灯
var light=新的三个半球灯光(0xffffff,0x000000,1.5);
光。位置。设置(1,1,1);
场景。添加(灯光);
//渲染
requestAnimationFrame(函数animate(){
请求动画帧(动画);
渲染器。渲染(场景、摄影机);
})
正文{
溢出:隐藏;
保证金:0;
}

好,但如果我用
网格旋转.x=3.Math.degToRad(-45)旋转它我看不到,好像另一面是黑色的,我已经更新了代码片段。在材质中添加了
side:THREE.DoubleSide
。我尝试使用
THREE.BoxGeometry(25,25,1)
而不是
THREE.PlaneGeometry(25,25)
为平面增加厚度,但我只希望它位于透明png图像的形状上,即我的箭头上,而不是整个25x25正方形上。有可能吗?@Miky您可以创建另一个问题,并提供详细的描述和所需结果的图片:)但到目前为止,我从您的评论中了解到的是,您正在寻找类似
THREE.Shape()
THREE.ShapeGeometry()
/
THREE.ShapeBufferGeometry()
。看看这个