frustum

    2熱度

    1回答

    我想知道使用可編程管線進行平截頭體剔除的最有效方式是什麼。我的意思是,如果我理解正確,按照此處描述的方法:Geometric Aproach(順便說一下,那裏曾經爲我工作過的唯一方法),像glGetFloatv(GL_MODELVIEW_MATRIX,...)這樣的函數不再有效,因爲在着色器階段計算最終頂點位置。我必須在客戶端計算我在呈現之前必須檢查的每個邊界框變換的平面視覺平面嗎? 謝謝。

    0熱度

    1回答

    我想知道在使用透視投影時是否有簡單的方法來翻轉y座標?關於這個問題的線索似乎集中在正交投影上。我正在將基於Canvas的遊戲轉換爲OpenGL ES 2.0,並且具有相對複雜的碰撞檢測功能。和大量的語法是基於y軸從屏幕的頂部始於0和例如2560 @Override public void onSurfaceChanged(GL10 unused, int width, int height) {

    1熱度

    1回答

    我在SFML中製作基於拼圖的遊戲,並決定實施一個簡單的包圍盒截錐體剔除,以僅繪製相機視口中的貼圖。結果取得了成功,因爲它將我的幀率提高了兩倍!但是,有一個緩存。當在調試中運行遊戲時,幀率將由實施的平截頭體剔除降低。它在調試中從90 fps下降到30 fps,而在發佈時它從100上升到了大約350 fps。 剔除只是檢查每個瓷磚矩形,無論它是否與視口的矩形相交。如果確實如此,則繪製。本場比賽呈現多個

    7熱度

    1回答

    我正在構建一個應用程序,其中我呈現了一些帶有紋理的平面。但是,我想計算螺旋線的半徑(我在計算中用於創建螺旋線),動態基於截錐體寬度和相機位置。 螺旋位於屏幕中心x = 0,y = 0,z = 0。 我想這樣做考慮屏幕方向(風景/人像)。到目前爲止,這是我有的代碼,但似乎我失去了一些東西,因爲左側和右側的飛機不在裏面視口。 App.prototype.calculateHelixRadius = f

    0熱度

    1回答

    我試圖理解一些可能比我現在想的要容易得多的東西,所以希望有人能夠幫助我理解我在下面描述的內容。 我知道,如果一個球體完全位於3D的六個平截頭體平面(左,右,底部,頂部,近遠)中的至少一個後面,那麼它就位於視錐體之外。在下面的例子中,對於以中心c2爲圓心的圓,這完全在左平面外。重疊測試簡單地通過將球的中心座標插入平面方程來獲得從中心到平面的距離,然後將其與球的半徑進行比較來完成。 但是,在中心c1的

    0熱度

    1回答

    我試圖找出確定點是否在平截頭體內的最佳方法。我有一些工作,但不知道它是否太麻煩,也許有一種更優雅/有效的方式,我應該這樣做。 假設我想找出是否點「X」是平截裏面: 一旦我有截的8點的位置(4附近分,4個遠點) ,我正在根據三個點的三角形計算平截面的每個平面的法線。例如(如上面在圖中),用於右側,我從三個點的使兩個向量: Vector U = FBR - NBR Vector V = FTR -

    2熱度

    1回答

    我正在使用自定義QSGGeometryNode和QSGTransformNode在Qml場景圖中繪製3D幾何(Point3D頂點)。除了3D模型在某個z座標處被切斷(z是Qml中的深度軸)之外,其他工作方式都是如此。首先,我期望這個問題是由於與Qml 2D平面交叉引起的。但我試圖沿着z軸移動模型,並且它總是被切斷(就好像有一個局部模型平截頭體剪切平面)。 什麼可能是這個問題的根源? 問候,

    -1熱度

    1回答

    我正在創建一個遊戲,當我渲染很多塊時。 fps嚴重下降,一切都滯後。我知道爲什麼它滯後,因爲同時渲染了許多對象,但我無法弄清楚如何創建和實現一個截錐體剔除或任何類型的剔除類到我的遊戲。 注:我正在使用VBOs。 我剛在網上找不到;請幫忙。 下面是我的一些代碼: //Render Game this were I render my game public void Render_GAME() {

    1熱度

    1回答

    我試圖確定相對於屏幕(視錐)在世界中的對象(一BoxGeometry)的位置(x,y,z座標)和而不是世界。該frustum.intersectsObject(...)方法簡單地返回一個布爾值,我想,以確定哪些象限([-X,Y],[X,Y] [X,-Y],[ - X,-Y])一箱相對於相機而言(下面屏幕截圖中的紅線跟隨相機而不是場景)。現在,只要相機未旋轉(room.children[i].pos

    1熱度

    1回答

    作爲編寫3D遊戲庫的一部分,我試圖實施平截頭體剔除以避免呈現超出攝像機視角範圍的對象。要做到這一點,我首先需要爲每個網格計算一個邊界球,並查看它是否與視錐體的六邊中的任何一邊發生碰撞。這是我目前(非常)天真的執行情況在我的代碼寫在model.py計算每個模型的包圍球: from pyorama.entity import Entity from pyorama.math3d.vec3 impor