gpt4 book ai didi

javascript - 自定义几何和面法线问题

转载 作者:行者123 更新时间:2023-11-29 17:23:38 26 4
gpt4 key购买 nike

我是 ThreeJS 的新手,我有一个小问题(可能是错误的用法)。我正在尝试创建自定义几何体并自行定义面法线。

我在一个方向上创建了一个法线,在相反方向上创建了另一个法线,因为我的网格不是双面的,我希望只看到其中一个面,但是我可以看到他们两个......任何想法我做错了吗?

谢谢!

<body>

<script src="../build/Three.js"></script>

<script src="js/Stats.js"></script>

<script>
var container, stats;

var camera, scene, renderer;


container = document.createElement( 'div' );
document.body.appendChild( container );

scene = new THREE.Scene();

camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 2000 );
camera.up.x = 0;
camera.up.y = 0;
camera.up.z = 1;

camera.position.x = 300;
camera.position.y = -1000;
camera.position.z = 1000;

camera.lookAt(new THREE.Vector3(300, 250, 0));
scene.add( camera );

var light, geometry, material;

scene.add( new THREE.AmbientLight( 0x404040 ) );

light = new THREE.DirectionalLight( 0xffffff );
light.position.set( 0, 1, 0 );
scene.add( light );

material = new THREE.MeshBasicMaterial( { color: 0xFFFF00, wireframe: false, transparent: false, opacity: 1 } );

geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(0,0,0));
geometry.vertices.push(new THREE.Vector3(600,0,0));
geometry.vertices.push(new THREE.Vector3(0,-500,0));
geometry.vertices.push(new THREE.Vector3(600,-500,0));
var face;

face = new THREE.Face3(0,2,1);
face.normal.set(0,0,-1);
geometry.faces.push(face);
face = new THREE.Face3(2,3,1);
face.normal.set(0,0,1);
geometry.faces.push(face);

geometry.computeCentroids();
//geometry.computeFaceNormals();
//geometry.computeTangents();

var mesh = new THREE.Mesh(geometry, material);

scene.add(mesh);

renderer = new THREE.WebGLRenderer( { antialias: true } );
renderer.setSize( window.innerWidth, window.innerHeight );

container.appendChild( renderer.domElement );

renderer.render( scene, camera );


</script>

</body>

最佳答案

WebGLRenderer 使用您创建面的顶点顺序而不是法线来定义方向。尝试这样做:

face = new THREE.Face3(2,1,3);

关于javascript - 自定义几何和面法线问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10886818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com