2017-04-03 39 views
1

我有一個three.js json模型文件使用BufferGeometry從blender加上它的紋理文件導出。從three.js json文件中刪除點

該對象有一些噪音,我正在尋找通過處理json文件本身後導出清理(我需要刪除一些頂點,但這不是一個平滑或抽取操作,即更容易做到這一點json數據比這個工作的其他地方)。

因此,從數據的角度來看,使用該文件時有兩個/三個問題。

  1. 除了刪除點數據,還需要對文件做些什麼?我認爲相應的紫外線和法線應該去?但是索引呢?
  2. 而不是從列表中刪除點可以將它們設置爲空?即使沒有數據,也要給索引映射一些東西?
  3. 假設我無法擺脫2,因此在json文件中一致地從每個數組中刪除數據,有沒有辦法重新計算索引而不回到攪拌機或類似的?我是否需要這樣做 - 我可以完全刪除索引數組嗎?

我要補充,這點移除目前正在做服務器端(目前蟒)未在瀏覽器中,但可能它可以在瀏覽器中完成,如果這是一個更好的辦法來解決這個。此外,該模型是相當大的在大約25萬的頂點

回答

0

我認爲你目前的方法去除頂點(在服務器上)是正確的方法,尤其是如果它處理重新索引。

  1. 對於每個頂點項目,您不僅必須刪除其關聯屬性(法線,UV),但是,您的索引需要更新,並且可能會非常激烈。考慮幾個三角形之間的共享頂點。你打算如何解釋?這聽起來像是一個比我想在瀏覽器中解決更難的問題。
  2. 否。頂點列表必須填入值。如果你不想讓你的方法具有完全的破壞性,你可以隨時調整索引來忽略你不想要的頂點,但這又不是一件小事。
  3. 有三種繪製模式:THREE.TrianglesDrawModeTHREE.TriangleStripDrawModeTHREE.TriangleFanDrawMode。對於THREE.TrianglesDrawMode中的共享頂點,您需要建立索引。要刪除索引,您需要將每個三角形定義爲頂點的離散三元組(可能包含大量重複數據)。對於THREE.TriangleStripDrawModeTHREE.TriangleFanDrawMode,一些頂點是共享的,但它們在緩衝區中的順序非常重要。設置你的幾何體來做到這一點與重構索引一樣困難。

雖然我需要問:爲什麼不嘗試調整噪聲頂點,而不是去除它們?這是一個簡單得多的任務,數學要容易得多,而且不需要擔心重新編制索引。

+0

爲了回答你的問題,我們在這裏解決了一些問題,降噪和完全去除模型中被認爲不相關的部分(因爲模型很複雜並由另一個系統生成)。 所有的事情都認爲通過Blender編寫腳本比整個手動處理原始的三維數據都要快。 單獨在三個數據中嘗試它是很好的,但Blender對我們來說是最好的/最快的選項,而且已經完成的python工作很容易轉移回攪拌機。 – CoderChris