我正在嘗試使用Three.js繪製旋轉3D座標系。我希望軸具有一定的厚度,到目前爲止,我已經使用LineBasicMaterial的線寬參數完成了這一步。在使用Three.js時缺少Windows線寬的解決方法
下面的代碼對我的作品,因爲我不是在Windows上:
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window. innerHeight, 0.1, 1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var triad = new THREE.Geometry();
triad.vertices.push(new THREE.Vector3( 0, 0, 0));
triad.vertices.push(new THREE.Vector3(10, 0, 0));
triad.vertices.push(new THREE.Vector3( 0, 0, 0));
triad.vertices.push(new THREE.Vector3( 0, 10, 0));
triad.vertices.push(new THREE.Vector3( 0, 0, 0));
triad.vertices.push(new THREE.Vector3( 0, 0, 10));
var line_mat = new THREE.LineBasicMaterial({'linewidth': 3});
var frame = new THREE.Line(triad, line_mat, THREE.LinePieces);
scene.add(frame);
camera.position.z = 40;
function render() {
requestAnimationFrame(render);
frame.rotation.x += 0.1;
frame.rotation.y += 0.02;
renderer.render(scene, camera);
}
render();
遺憾的是,在Windows上線寬的限制,由於角度圖書館,看到了這個問題:Thickness of lines using THREE.LineBasicMaterial
什麼我可以用作解決方法,以便在Windows上正確顯示嗎?
您可以創建具有特定長度的CylinderGeometry並定位圓柱體。對於更平滑的東西,您可以嘗試設置樣條線並沿着樣條線拉伸,如下例所示: http://threejs.org/examples/#webgl_geometry_extrude_splines 此外,您還可以使用自己的方法計算東西,並創建自己的幾何體,這取決於你的需求,但我認爲爲你的座標系設置幾個氣缸應該沒問題? 另外,你可以告訴Firefox例如使用本機OpenGL驅動程序,然後在Windows下有線寬,但在大多數情況下速度較慢...... – GuyGood