gpt4 book ai didi

colors - 为 Three.js BoxGeometry 的面着色

转载 作者:行者123 更新时间:2023-12-04 03:23:59 28 4
gpt4 key购买 nike

我看到了一些访问 THREE.BoxGeometry 面的解决方案:

var geometry = new THREE.BoxGeometry(n,n,n)
let faces = geometry.faces;
for (let face of faces) {
face.color.set(Math.random() * 0xffffff);
}
但似乎 faces -array 在当前 Three.js 版本 r129 ( Uncaught TypeError: faces is not iterable ) 中不存在。
如何轻松实现六个立方体面的着色?

最佳答案

像这样尝试:

let camera, scene, renderer, mesh;

init();
animate();

function init() {

camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.01, 10 );
camera.position.z = 1;

scene = new THREE.Scene();

const geometry = new THREE.BoxGeometry( 0.2, 0.2, 0.2 ).toNonIndexed();

// vertexColors must be true so vertex colors can be used in the shader

const material = new THREE.MeshBasicMaterial( { vertexColors: true } );

// generate color data for each vertex

const positionAttribute = geometry.getAttribute( 'position' );

const colors = [];
const color = new THREE.Color();

for ( let i = 0; i < positionAttribute.count; i += 3 ) {

color.set( Math.random() * 0xffffff );

// define the same color for each vertex of a triangle

colors.push( color.r, color.g, color.b );
colors.push( color.r, color.g, color.b );
colors.push( color.r, color.g, color.b );

}

// define the new attribute

geometry.setAttribute( 'color', new THREE.Float32BufferAttribute( colors, 3 ) );

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 );

}

function animate() {

requestAnimationFrame( animate );

mesh.rotation.x += 0.01;
mesh.rotation.y += 0.02;

renderer.render( scene, camera );

}
body {
margin: 0;
}
<script src="https://cdn.jsdelivr.net/npm/three@0.129.0/build/three.js"></script>

使用 r125 从核心中删除了先前的几何格式。 three.js 论坛上的以下帖子中的更多信息。
https://discourse.threejs.org/t/three-geometry-will-be-removed-from-core-with-r125/22401

关于colors - 为 Three.js BoxGeometry 的面着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67989801/

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