2024/03/07(木) [n年前の日記]
#1 [python] Python + glfwで疑似3D道路の描画実験中。その5
Windows10 x64 22H2上で、Python 3.10.10 64bit + glfw 2.7.0 + PyOpenGL 3.1.6 + Pillow (PIL) 10.2.0 を使って実験中。疑似3D道路を描画してみたい。
_昨日 書いた、テクスチャを貼り付けて道路を描画する版にはバグがあることが分かった。テクスチャのuv値の指定がおかしくて、道路用のテクスチャがそのままの形で描画されない状態になっていた。
昨日の版は以下。
本来、テクスチャは、画面奥から手前に向かって、A,B,C,D と表示されないといけないはずだけど、並びが逆になっている。もし、テクスチャの上下が逆になっているだけなら、ABCDの文字も読めないはずだけど、文字自体は上下がちゃんとした状態で表示されているので、指定すべきv値がグチャグチャになってることが分かる。また、左右も逆になってしまっている。
修正版は以下。奥から手前に向かって、A,B,C,Dと並んでるし、左右も合ってる。
ちなみに、この状態なら、フラットな見た目のテクスチャ画像を貼っても、妙なゴミがでてこない状態になった。
今回、道路データ(セグメントデータ)の配列インデックス値を元にしてv値を決めていたけれど、その配列インデックス値をそのまま使って計算していたのがバグの原因だった。手前から奥に向かって道路の座標値を計算して、その並びを逆にして、奥から手前に描画するのだけど、それを踏まえながらインデックス値を扱わなければいけなかった…。
テクスチャのuv値が正しいのか、見た目ですぐに分かるテクスチャを使いながらテストしないとダメだなと…。
_昨日 書いた、テクスチャを貼り付けて道路を描画する版にはバグがあることが分かった。テクスチャのuv値の指定がおかしくて、道路用のテクスチャがそのままの形で描画されない状態になっていた。
昨日の版は以下。
本来、テクスチャは、画面奥から手前に向かって、A,B,C,D と表示されないといけないはずだけど、並びが逆になっている。もし、テクスチャの上下が逆になっているだけなら、ABCDの文字も読めないはずだけど、文字自体は上下がちゃんとした状態で表示されているので、指定すべきv値がグチャグチャになってることが分かる。また、左右も逆になってしまっている。
修正版は以下。奥から手前に向かって、A,B,C,Dと並んでるし、左右も合ってる。
ちなみに、この状態なら、フラットな見た目のテクスチャ画像を貼っても、妙なゴミがでてこない状態になった。
今回、道路データ(セグメントデータ)の配列インデックス値を元にしてv値を決めていたけれど、その配列インデックス値をそのまま使って計算していたのがバグの原因だった。手前から奥に向かって道路の座標値を計算して、その並びを逆にして、奥から手前に描画するのだけど、それを踏まえながらインデックス値を扱わなければいけなかった…。
テクスチャのuv値が正しいのか、見た目ですぐに分かるテクスチャを使いながらテストしないとダメだなと…。
[ ツッコむ ]
以上です。