1

panda3d の立方体にキューブマップ イメージをレンダリングする際に問題があるようです。すべてのイメージが右下の頂点に発散して、カラフルだが残念ながら望ましくないデザインを作成しているようです。

ここに画像の説明を入力

キューブを作成し、キューブマップをレンダリングしようとしたコード:

from direct.showbase.ShowBase import*
from panda3d.core import*

import random

class myapp(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
        self.cube=self.loader.loadModel("cube.egg")
        self.tex = loader.loadCubeMap('face_#.jpg')

        self.cube.setTexture(self.tex)


        for i in range(50):
          self.placeholder = self.render.attachNewNode("Placeholder")
          self.placeholder.setPos(random.randint(1,100), random.randint(1,100),random.randint(1,100))
          self.cube.instanceTo(self.placeholder)

        self.cube.reparentTo(self.render)

app=myapp()

app.run()
4

1 に答える 1

2

デフォルトでは、モデルに割り当てられた一連の U、V、W テクスチャ座標に従ってキューブ マップが適用されます。通常の U、V 座標は、W 座標がないため、キューブ マップの表示には適していません。したがって、一部の面で不鮮明に表示されます。モデリング プログラムでモデルにキューブ マップ座標を割り当てることは一般的ではありません (ただし可能です)。代わりに、通常は自動テクスチャ座標生成が使用され、法線ベクトルまたはその変換バージョンを使用してキューブ マップの適切な座標が生成されます。サンプリング。

Panda3D では、setTexGen関数を使用してこれを行うことができます。Panda3D がキューブ マップの座標を生成する方法はいくつかありますが、キューブ マップの種類によって異なります (例: 反射キューブ マップか静的キューブ マップかなど)。一例:

        self.cube.setTexGen(TextureStage.getDefault(), TexGenAttrib.MEyeCubeMap)

詳細については、それぞれのマニュアル ページを 参照してください: https://www.panda3d.org/manual/index.php/Automatic_Texture_Coordinates

于 2014-08-22T12:19:56.010 に答える