raytracing

    0熱度

    1回答

    我正在用C++編寫光線追蹤器,而且我很難理解爲什麼我的輸出圖像不包含所有應該在那裏的對象。也就是說,我正在與球體和飛機一起工作,而且我不能在每個實體上繪製多個實例。 從ASCII文件讀取對象值(例如半徑,位置,法線等)。這是我的相交測試代碼。 //check primary ray against each object for(int size = 0; size < objList.

    0熱度

    2回答

    在這個代碼頭腦文章http://www.codermind.com/articles/Raytracer-in-C++-Depth-of-field-Fresnel-blobs.html中,關於反射/折射的部分有幾個它檢查是否傳輸或反射光線的情況。 它說,在範圍0到rand_num 1: if(rand_num<=reflectance){ //reflect a ray }else

    0熱度

    2回答

    我目前正在嘗試使用Povray來產生一些射影模式。我必須設計一個任意形狀的鏡頭。鏡片可以被認爲是一片玻璃。透鏡的入射面是一個平面,並且折射表面具有不同的高度。我已將這個不同的Z座標保存爲高度圖。我想知道創建這個物體的最佳方式是什麼,並且指定了透鏡的參數,例如折射率。我想在鏡頭後面放置一個屏幕,在那裏可以觀察到所需的焦散模式。 謝謝!

    3熱度

    1回答

    我想在片段着色器的網格上做光線跟蹤。我已經寫了下面的着色器來做到這一點(頂點着色器只是畫一個screenquad)。 #version 150 uniform mat4 mInvProj, mInvRot; uniform vec4 vCamPos; varying vec4 vPosition; int test(vec3 p) { if (p.x > -4.0 &&

    6熱度

    1回答

    我正在用C++編寫光線跟蹤器,並且我一直在使用折射問題。我渲染一個球體和一個地平面,球體應該折射。然而,它看起來更像是一個球體內的球體:「外部」球體看起來被適當地遮蔽,但不會折射,而「內部」球體看起來像是自我陰影。下面是它的外觀鏈接:http://imgur.com/QVGkeBT。 下面是相關的代碼。 //inside main raytrace function if(refract

    3熱度

    2回答

    在我的OpenGL應用程序中,我有很多球體(超過100.000),並且我願意實施高效的射線拾取算法。 我的方法迄今是幼稚之一: 計算射線(在對象空間中)對應於鼠標指針,然後相交每個球體,我有與所述射線。雖然這種方法對於我的應用程序來說可能足夠快(實際渲染球體會比用光線拾取它們慢)...我想知道哪種方法是最適合這種情況的。 我特別關心的是這些球體可能具有任意半徑,而且我不知道如何在空間分割結構(如八

    2熱度

    1回答

    我有一個無限平面,我知道它的正常和偏移。 現在,我想知道射線射線是否與此無限平面相交。 我怎麼知道?

    1熱度

    1回答

    我不得不生成一個黑圈的圖像,黑色的是(0,0,0),白色的是(1,1,1),但我一直得到一個完全黑色的圖像。這裏是我的所有代碼: #include "cast.h" #include "collisions.h" #include <stdio.h> #include "math.h" int cast_ray(struct ray r, struct sphere spheres[],

    0熱度

    1回答

    我想實現光線跟蹤,我用從書‘的基礎基於物理渲染’KD樹構造方法在KD-tree構造邊界框。 書使用一種稱爲SAH的方法來選擇分割邊界框的位置 它從場景中對象的邊界框的邊緣選擇分割位置。邊沿沿軸線從低到高排序。 它和它找到像這樣的最佳分割: //<Compute cost of all splits for axis to find best> int nBelow = 0, nAbove = n

    1熱度

    1回答

    我已經寫了一個2D Raycaster,可以繪製射線到任何java形狀,包括: Line2D,Rectangle2D,Ellipse2D,QuadCurve2D和CubicCurve2D。 它背後的數學實際上非常複雜和密集,尤其是四邊形和立方體,所以我設置了一個線程池。 我根據可用內核數量製作了一個固定線程數的ExcecutionService「exec」。 然後我將負責每個形狀的代碼塊更改爲靜態