ae3dConvertToScreen

始めにAnimation Engineを開いて、start using stack "animationEngine" サンプルスタックは、下記をメッセージボックスにコピペしてリターンキーを go stack \ url "http://kenjikojima.com/livecode/ae/ae3dconverttoscreen.livecode" 3D 座標 の XYZ 点を、レボルーションのカード上又はグループ上の、2次元座標のデフォルトビューに変換します。 最後のパラメータ「focalLength」は、3D オブジェクトからの視点の距離で、数値によって視角が変わってきます。 「focalLength」のデフォルトは、3D オブジェクトが標準的な形に見える値の300 ですが、 数が小さくなると視角が広くなるので、3D オブジェクトの歪みが大きくなります。 基本構文: ae3dConvertToScreen(3D座標のX点, 3D座標のY点, 3D座標のZ点, \ カード又はグループ上のX点, カード又はグループ上のY点 [, 焦点距離]) ae3dConvertToScreen(x,y,z,originX,originY[,focalLength]) サンプル: 3D 座標の 0 から、それぞれ50ピクセル(タテXヨコX高さ、100x100x100)の立方体をモデルに考えてみます。 図1:立方体の角となるポイントは8箇所ですから、それを表すためのポイントを結ぶ線は 12 必要です。 ポリゴンで一筆書きをして行くと、「ABCDAEFD」「BGE」「FHG」「HC」のポイントを結ぶ、 4つのポリゴンのブロックで(図3ブルーのライン)、立方体を書き表す事ができます。 図2の表は、それぞれのポイントの3D座標とポリゴンにする場合の順序。つまりこの表を 「ae3dConvertToScreen」で平面座標に変換して、ポリゴンを描けば平面上に、 デフォルトの視点からの立体を描くことができます。 カードのサイズ 400 x 400 の中央(3D オブジェクトのオリジンの座標 200, 200) に、 それぞれの3D座標を「ae3dConvertToScreen(x,y,z,200,200)」で、平面座標に変換したのが図4 で、 平面上のポイントを図に書き込んでいます。 「ae3dConvertToScreen」で得られる座標は、Z軸プラスからマイナスに向かって見ている図で、 立方体の面「ABCD」が、もう1方の面「EGHF」より小さく描かれます。 3D座標を変換して、3Dを平面上に描くスクリプト: -- fld “tPoints” に、図2の3D座標があるとして、 
 -- グラフィックの polygon 「threeD」は、予め描いておく -- カードのセンターが 3D オブジェクトのオリジンの座標に設定
 repeat for each line theLine in field "tPoints" if theLine = "" then put return after output next repeat end if put ae3dconverttoscreen(theLine,the loc of this cd,300) & return after output end repeat set the points of graphic "threeD" to char 1 to -2 of output このページは、Björnke von Gierke の作ったスタック「Mouse rotator for 3d」を参考にしています。 ae3dConvertToScreen 続き












A 50,50,50
B 50,-50,50
C -50,-50,50
D -50,50,50
A 50,50,50
E 50,50,-50
F -50,50,-50
D -50,50,50

B 50,-50,50
G 50,-50,-50
E 50,50,-50

F -50,50,-50
H -50,-50,-50
G 50,-50,-50

H -50,-50,-50
C -50,-50,50