お疲れ様です。秋並です。
Pybullet公式gitリポジトリのサンプルコードを解説するシリーズです(一覧はこちら)。
今回は、configureDebugVisualizer.pyを解説します。(コードのリンクはこちら)
本コードを実行すると、時間とともに光源位置を変化する様子が可視化されます。
使用している機能
本コードは、以下の機能を使用して「光源位置を変化させる」ことができます。
- 光源位置を変化させる
configureDebugVisualizer
関数を使用することで、シミュレーションの見た目に関する設定を変更することができます。
pybullet.configureDebugVisualizer(lightPosition=[x, y, z])
-
lightPosition
:光源の位置([x,y,z])
サンプルコードでは、ステップごとに光源位置を変化させています。
コメントをつけたサンプルコード
サンプルコードにコメントをつけたものが以下になります(もともとあった不要と思われるコメント等については削除しています)
import pybullet as p
import math
import time
import pybullet_data
# 1ステップに経過する時間を設定
dt = 1./240.
# PybulletにGUIモードで接続
p.connect(p.GUI)
# Pybulletに関するデータのパスを取得
p.setAdditionalSearchPath(pybullet_data.getDataPath())
# r2d2を生成
p.loadURDF("r2d2.urdf",[0,0,1])
# 床を生成
p.loadURDF("plane.urdf")
# 重力を設定
p.setGravity(0,0,-10)
# 光源が移動する円軌道の半径
radius=5
# 経過時刻を0で初期化
t = 0
# 影の描画に関する設定
p.configureDebugVisualizer(shadowMapWorldSize=5)
p.configureDebugVisualizer(shadowMapResolution=8192)
while (1):
t+=dt
# 光源の位置を設定
p.configureDebugVisualizer(lightPosition=[radius*math.sin(t),radius*math.cos(t),3])
# シミュレーションを1時刻分進める
p.stepSimulation()
time.sleep(dt)