簡體   English   中英

使用three.js,我可以將信息附加到對象,例如URL嗎?

[英]With three.js, can I attach information to an object, such as a URL?

我有一個與three.js相關的webgl問題。 我想將信息附加到一個對象。 例如,當我點擊一個對象時,我想檢索一些與該對象綁定的信息,如URL,然后使用該信息運行一個函數。

我用來查找對象的代碼是:

    var vector = new THREE.Vector3((event.clientX / window.innerWidth) * 2 - 1, -(event.clientY / window.innerHeight) * 2 + 1, 0.5);
    projector.unprojectVector(vector, camera);

    var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());

    var intersects = raycaster.intersectObjects(objects);

    intersects[0].object.material.color.setHex(Math.random() * 0xffffff);

最后一行是我當前如何操縱對象。 數組objects只是所有對象的數組。 問題是我不太了解Raycaster或intersectObjects是如何工作的,或者關於如何將任何信息綁定到對象以便稍后可以調用它。

實際上,您可以將自定義用戶數據設置為Three.js中的對象。 這里的關鍵是Object3D,它是所有場景圖形對象的基礎。 文檔有一個叫做的屬性

Object3D.userData; 

這可以加載您選擇的對象,當Raycaster類檢索您的交叉時,您可以直接在該點訪問它。

初始化或運行時的setter

Object3D.userData = { URL: "http://myurl.com" };

碰撞中的吸氣劑

window.location = intersects[0].object.userData.URL;

暫無
暫無

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

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