簡體   English   中英

在threejs中渲染后更新頂點位置

[英]Update a vertex position AFTER rendering in threejs

我想在渲染后更新頂點位置。 下面代碼中的改變頂點和渲染后的update語句沒有任何作用。

我要求你指出我在這里遺漏了什么。

var mat = new THREE.LineBasicMaterial( { color: 0xffffff, linewidth: 2 } ); 
var wireframe = new THREE.LineSegments( geo, mat ); 
scene.add( wireframe ); 
wireframe.geometry.attributes.position.array[0] = 300; 
wireframe.geometry.attributes.position.array[1] = 300; wireframe.geometry.attributes.position.array[2] = 3; 
wireframe.geometry.verticesNeedUpdate = true;

camera.position.z = 1000; 
renderer.render(scene, camera);

wireframe.geometry.attributes.position.array[0] = 3;
wireframe.geometry.verticesNeedUpdate = true;  

首先永遠不要包含來自threejs.org 的three.js它會隨着更新而中斷。 始終使用您自己的副本或版本化的 CDN

你需要設置

wireframe.geometry.attributes.position.needsUpdate = true;

除非您在更改某些內容后進行渲染,否則three.js 中的任何內容都不會在視覺上發生變化。 只需添加另一個渲染調用即可顯示您的更改

 var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000); var renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); var geo = new THREE.EdgesGeometry(new THREE.BoxGeometry(500, 500, 500)); var mat = new THREE.LineBasicMaterial({ color: 0xffffff, linewidth: 2 }); var wireframe = new THREE.LineSegments(geo, mat); scene.add(wireframe); wireframe.geometry.attributes.position.array[0] = 300; wireframe.geometry.attributes.position.array[1] = 300; wireframe.geometry.attributes.position.array[2] = 300; camera.position.z = 1000; renderer.render(scene, camera); wireframe.geometry.attributes.position.array[0] = 0; wireframe.geometry.attributes.position.array[1] = 0; wireframe.geometry.attributes.position.array[2] = 0; wireframe.geometry.attributes.position.needsUpdate = true; renderer.render(scene, camera);
 <script src="https://cdn.jsdelivr.net/npm/three@0.112.1/build/three.min.js"></script>

你可能想看看這些教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM