プログラムで3Dロボットが動く映像を表現してみる

使用したソフトウェアはDelphi10.3です。(Community Editonは無料で利用できます。)3Dオブジェクトを使用してロボットを映像化した手順を解説します。

0.作業の流れ

  1. フォームを作成
  2. Viewport3Dを配置
  3. Lightを配置
  4. LightMaterialSourceを配置
  5. ロボットの構成部材(オブジェクト)を配置
  6. ロボットの形に設定

1.フォームを作成

Delphiの初期画面からファイル ->新規作成 -> マルチデバイス アプリケーションを選択

新規作成

2. Viewport3Dを配置

パレットからViewport3Dをダブルクリックしてフォームに追加

Viewport3Dを追加

オブジェクトインスペクタからViewport3DのAlignプロパティ値をClientに設定してFormの大きさに拡大します。

3.Lightを配置

パレットからLightを選択し Viewport3D に配置します。配置後左上の方に移動しておきます。

4. LightMaterialSourceを配置

同様の手順でにLightMaterialSourceを配置、配置後上に移動

5. ロボットの構成部材(オブジェクト)を配置

3DShapesからSphereオブジェクトを配置

ロボットの構成部材(オブジェクト)を配置

オブジェクトインスペクタからSphereプロパティのMaterialSourceを LightMaterialSource1に指定

Sphere が立体表示されました。同様に以下のオブジェクトを配置し、プロパティを設定していきます。nameも変更しておきます。

配置するオブジェクトとプロパティ値

ロボットを構成する部材は以下の15のオブジェクトになります。

  • 球体 Sphere: 足、左肩、右肩、左目、右目
  • 立方体 RoundCube:胴体
  •     Cube:左指1、左指2、右指1、右指2
  • 円柱Cylinder: 左腕、右腕、左手、右手

追加すると真ん中に配置されるので、見やすいようにドラッグして移動させておきます。

6.ロボットの形に設定

足になるオブジェクトのSphereのプロパティ値を設定します。nameを Sphere _Legに、Widthを3、Heightを3、Depthを3、 Position.xを0に、 Position.yを2.5に、 Position.zを0に設定します。同様に他のオブジェクトを以下のプロパティ値に設定します。

各オブジェクトのプロパティ値

大きさ[Width,Height,Depth]   位置 Position(x,y,z)

  1. 足 Sphere_Leg [3,3,3]  (0,2.5,0)
  2. 胴体 RoundCube_Body [3,3,3]  (0,-3,0)
  3. 左肩 Sp_ShoulderL [1,1,1]  (2,-0.9,0)
  4. 左腕 Cylinder_ArmL [1,1.8,1]  (0,1.4,0)
  5. 左手 Cylinder_HandL [1,0.2,1]  (0,1.1,0)
  6. 左指1 Cube_FingerL1 [0.2,1,0.2]  (0,2.0.8,0)
  7. 左指2 Cube_FingerL2 [0.2,1,0.2]  (-0,2.0.8,0)
  8. 右肩 Sp_ShoulderR [1,1,1]  (-2,-0.9,0)
  9. 右腕 Cylinder_ArmR [1,1.8,1]  (0,1.4,0)
  10. 右手 Cylinder_HandR [1,0.2,1]  (0,1.1,0)
  11. 右指1 Cube_FingerR1 [0.2,1,0.2]  (0,2.0.8,0)
  12. 右指2 Cube_FingerR2 [0.2,1,0.2]  (-0,2.0.8,0)
  13. 頭部 Cylinder_Head [2,1.5,2]  (0,-2.3,0)
  14. 左目 Sphere_EyeL [0.5,0.5,0.5]  (0,0,-0.9)
  15. 右目 Sphere_EyeR [0.5,0.5,0.5]  (-0.9,0,0)

オブジェクト間に親子関係を設定していきます。子となるオブジェクトをドラックして親となるオブジェクト位置に移動してドロップすることで下の階層構造に設定できます。以下の構造になるように配置します。

全ての設定が終わると以下のようになります。

(補足):足のプロパティ値を設定したら、胴体のプロパティ値を設定し、構造ウインドウで 胴体 を足の配下に移動して、次に頭のプロパティを設定してというように一つづつ設定したほうが分かりやすいかもしれません。

ロボットの動かし方の例

  • 移動:足(Sphere_Leg)のposition値を変更させる。x:左右、y:上下、z:前後
  • 右腕を前方にあげる:右肩(Sp_ShoulderR)のRotationAngle.X値を変更する。
  • 右手を回す:右手(Cylinder_HandR)のRotationAngle.Y値を変更する。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA