three.js 畫線

2023-02-16 17:23 更新

假設(shè)你將要畫一個(gè)圓或者畫一條線,而不是一個(gè)線框模型,或者說不是一個(gè)Mesh(網(wǎng)格)。 第一步我們要做的,是設(shè)置好renderer(渲染器)、scene(場(chǎng)景)和camera(相機(jī))-(如果對(duì)這里所提到的東西,還不了解,請(qǐng)閱讀本手冊(cè)第一章“創(chuàng)建一個(gè)場(chǎng)景 - Creating a scene”)。

這是我們將要用到的代碼:

const renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );

const camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 500 );
camera.position.set( 0, 0, 100 );
camera.lookAt( 0, 0, 0 );

const scene = new THREE.Scene();

接下來我們要做的事情是定義一個(gè)材質(zhì)。對(duì)于線條來說,我們能使用的材質(zhì)只有LineBasicMaterial 或者 LineDashedMaterial

//create a blue LineBasicMaterial
const material = new THREE.LineBasicMaterial( { color: 0x0000ff } );

定義好材質(zhì)之后,我們需要一個(gè)帶有一些頂點(diǎn)的geometry(幾何體)。

const points = [];
points.push( new THREE.Vector3( - 10, 0, 0 ) );
points.push( new THREE.Vector3( 0, 10, 0 ) );
points.push( new THREE.Vector3( 10, 0, 0 ) );

const geometry = new THREE.BufferGeometry().setFromPoints( points );

注意,線是畫在每一對(duì)連續(xù)的頂點(diǎn)之間的,而不是在第一個(gè)頂點(diǎn)和最后一個(gè)頂點(diǎn)之間繪制線條(線條并未閉合)。

既然我們已經(jīng)有了能夠畫兩條線的點(diǎn)和一個(gè)材質(zhì),那我們現(xiàn)在就可以將他們組合在一起,形成一條線。

const line = new THREE.Line( geometry, material );

剩下的事情就是把它添加到場(chǎng)景中,并調(diào)用render(渲染)函數(shù)。

scene.add( line );
renderer.render( scene, camera );

你現(xiàn)在應(yīng)當(dāng)已經(jīng)看到了一個(gè)由兩條藍(lán)線組成的、指向上的箭頭。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)