[英]Managing Metadata of threejs Geometry
我的three.js幾何圖形具有元數據。 鏈接此元數據的最佳方法是什么,因為沒有屬性可以直接將其存儲在對象本身中?
您可以將用戶數據存儲在Object.userData對象中。
編輯:有人指出,幾何沒有userData ...
但是userData仍然可以使用並且將被序列化,所以也許類似
myScene.userData.geometryMetas={}
and then populate with myScene.userData.geometryMetas[geometry.uuid]=YourMetaData
您有三個選擇。
只需將Attribute屬性直接添加到three.js對象即可。
var myGeom = new THREE.Geometry();
myGeom.Attributes = Metadata;
這具有快速簡便的優點。 它的缺點是易破解且有些脆弱(就像猴子修補一樣),並且元數據不會包含在Geometry的toJSON()
方法中,這可能是您想要的,也可能不是。
只需將幾何圖形包裝在具有自己的Attributes屬性的新對象中即可。 您可以使用一個普通對象:
var myGeom = {
geometry: new THREE.Geometry(),
attributes: Metadata
};
或創建一個構造函數:
function MyGeom(geometry, attributes) {
this.geometry = geometry;
this.attributes = attributes;
}
var myGeom = new MyGeom(new THREE.Geometry, Metadata);
缺點是,到處只能攜帶THREE.Geometry
對象,現在您必須使用包裝的對象,並在需要時調用Three.js API對其進行包裝,然后重新包裝從包裝中獲取的所有內容。它。
每個THREE.Geometry
對象都有一個唯一的uuid
屬性。 您可以將此uuid用作單獨的元數據對象中的鍵,並且仍然只能與常規Three.js對象一起使用。
var AllMetadata = {}; // Should be global or assigned to a project namespace
var myGeom = new THREE.Geometry();
AllMetadata[myGeom.uuid] = Metadata;
這樣,您就不必通過幾何傳遞屬性數據,但是在需要時可以使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.