簡體   English   中英

3D透明JavaFX不會混合網格中的所有三角形

[英]3D Transparency JavaFX not blending all triangles in a mesh

我目前正在繪制通過行進立方體算法生成的單個透明3D網格,目的是在問題解決后擁有更多對象。

就目前而言,我可以很好地繪制3d形狀,但是當我實現透明性(在我的情況下,更改網格PhongMaterial的不透明度)時,我得到了一個怪異的效果,在另一個三角形后面僅渲染了幾個三角形。

參見示例。

http://i.imgur.com/1wdmYYs.png (對不起,由於代表我無法直接發布圖像)

當“棒”位於較大形狀的后面時,三角形似乎丟失了,我目前不知道為什么。

紅色是所有以相同方式渲染的相同網格。

我目前正在使用環境光,如果有區別的話。

一些示例代碼:

MeshView mesh = generate Mesh Data via marching cube;
mesh.setCullFace(CullFace.None);

PhongMaterial mat = new PhongMaterial(1, 0, 0, 0.5d);

AmbientLight light = new AmbientLight();
light.setColor(new Color(1, 0, 0, 0.5)); // I dont believe the alpha makes a difference
light.setOpacity(0.5);


mesh.setMaterial(mat);
group.getChildren().addAll(light, mesh);

僅當按照與相機的距離對三角面分類時,透明度才能正確工作。 消費者3D卡將任何場景分解為三角形,因此它們可以分別渲染每個場景,這是一個事實。 當您有數百個核心時,這允許同時渲染數百個三角形。 較舊的卡片會向您顯示可以渲染的三角形數量/秒。

在更現代的卡上,部分三角形渲染已移至驅動程序,該驅動程序使用卡上的矢量引擎來計算軟件中每個點的顏色。 這仍然是快速的,因為您可以擁有1000多個矢量CPU,此外,它還允許您創建復雜的程序,在將每個頂點/像素存儲到內存之前對其進行修改,從而可以創建閃亮的表面等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM