我使用three.js所版本65.申請morphTargets於粒子系統或點雲
我使用ParticleSystem
在三維空間中顯示的一組點@時間t = 0。而且我在時間t = 1有下一組分數。現在我想動畫它在JSONLoader
morphTarget
動畫?任何人都可以建議我實現這個目標的最佳方法嗎?
(或)
我能喜歡這個WebGL的着色器程序?請建議。
在此先感謝。
我使用three.js所版本65.申請morphTargets於粒子系統或點雲
我使用ParticleSystem
在三維空間中顯示的一組點@時間t = 0。而且我在時間t = 1有下一組分數。現在我想動畫它在JSONLoader
morphTarget
動畫?任何人都可以建議我實現這個目標的最佳方法嗎?
(或)
我能喜歡這個WebGL的着色器程序?請建議。
在此先感謝。
是的,你可以用着色器來做到這一點。你可以爲屬性vec3 position
,vec3 nextPosition
和統一的float scale
創建一個自定義着色器,其屬性從0變爲1. 然後,您可以向着色器添加一些邏輯,以計算新位置,如vec3 pos = position * scale + nextPosition * (1.0 - scale)
(以及常用的廣告牌/ GL_Point代碼)。當你達到規模1時,你將position
與nextPosition
對換,並填入nextPosition與相關的追隨者。
好運玩得開心:)
PS:我提到的代碼僅僅是線性插值。在你的情況下,你可能會考慮其他插值。也許甚至可以添加另外兩個屬性矢量來指示前導點和後續點,以便用貝塞爾曲線計算新位置。
最後,你不得不遲早考慮性能。如果你有10k粒子和1k「狀態」,你可能會遇到性能問題。
嗨Doidel,謝謝你的回覆。有沒有可能在Three.js本身實現它?自從我開始Three.js第一個和WebGL下一個:(所以我很喜歡Three.js – user2118784
yesyes,那答案是Three.js ^^你可以使用THREE.ParticleSystem自定義着色器,例如:http:/ /www.ianww.com/blog/2012/12/16/an-introduction-to-custom-shaders-with-three-dot-js/ – Doidel
Hi Doidel,謝謝,我也在努力。 – user2118784