2013-07-12 75 views

回答

0

我在C \ C++ 3年經驗和的OpenGL。然而,我不知道如何解決這個問題。

我覺得這很難相信。

你需要什麼:

  1. Marching cubes algorithm.Or marching tetrahedra,如果你擔心專利。
  2. Meta balls formula

元粒子系統包括幾個 「元球」,其中 「發射」, 「能量」 的。 通過meteball排出的「能量」可以是正面/負面,並且通常隨着距離metaball的距離而下降。衰減與點光有點相似,只是可以使用任何數學體而不是點(只要可以計算距離)。

對於空間中的任何給定點,元球系統的「能量」可以是系統中所有元體的所有能量的總和(它們隨距離減小,記住?)。

現在,鑑於這個「能量場」,您可視化metabody系統,就好像您將可視化iso表面(或任何其他程序表面)一樣。

對於任何空間點,如果「能量」低於特定的thresold,則此點位於由元微粒形成的「網格」之外。 如果「能量」高於thresold,則點在由變形粒子形成的「網格」內。

兩點爲您提供了分段,並且知道線段,您可以計算哪個線段穿過網格的「表面」的點。

現在,使用「行軍立方體」算法,通過一定的空間區域走過,你會得到一個網格。

法線是通過對位於網格表面上的點的小偏移(例如x/y/z + - 0.01)處的能級進行採樣來計算的。

如果這個解釋很難,那麼我認爲nvidia sdk有進行立方體算法的例子。閱讀示例,將相同的想法應用於元微粒。

這裏就是你可以用這種算法得到: enter image description here

+0

感謝。對不起,不知道。我是自學成才的。我能夠實現它。現在我正在嘗試使用它進行實時操作。 – Boodz