Processing

PythonでProcessing Lights, Camera Coordinates modelX() / modelY() / modelZ()

モデル空間における 3 次元の X, Y, Z 位置を返す。これは、現在の変換(拡大縮小、回転、平行移動など)に基づいて、指定された座標のX/Y/Z値を返す。X/Y/Z値は、変換が使用されなくなった後、元の点の位置に相対的に空間にオブジェクトを配置するために使用できる。

def setup():
  size(500, 500, P3D)
  noFill()

def draw():
  background(0)
 
  pushMatrix()
  # 画面の中央からスタート
  translate(width/2, height/2, -200)
  # 面白くするためのランダムなローテーション
  rotateY(1.0) #yrot)
  rotateZ(2.0) #zrot)
  # Xの回転は、フレームごとに少しずつ
  rotateX(frameCount / 100.0)
  # センターからのオフセット
  translate(0, 150, 0)
 
  # 白い箱の輪郭を(0, 0, 0)に描く
  stroke(255)
  box(50)
 
  # ボックスが(0, 0, 0)に描かれていた場合、その位置を保存する
  x = modelX(0, 0, 0)
  y = modelY(0, 0, 0)
  z = modelZ(0, 0, 0)
  # トランスフォームをすべて消去
  popMatrix()

  # 同じ座標(x, y, z)に別の箱を描く
  pushMatrix()
  translate(x, y, z)
  stroke(255, 0, 0)
  box(50)
  popMatrix()