3DソフトからSCMマクロ作成(FS2000以降)

ここでは、壺屋の伝統家屋を例にマクロを作成します。

用意する物、3Dソフト(ここではDogaを使いました)、エクセル、ペイントソフト

1:まず原型を3Dソフトで作成

2:DirectX(*.X)形式で保存。

3:X形式ファイルをテキストエディタで開く。

4:ファイルから以下の部分を切り抜く

Mesh Body {

 76;

 1.620000;4.320000;-0.000000;,

 4.860000;2.250000;3.060000;,

 (略)

 

  67;

 4;2,1,0,0;,

 4;5,4,3,3;,

(略)

4;68,75,74,71;;(ここまで)

 

 MeshMaterialList {(ここ以下の利用方法については、近く研究予定)

 

5:切り抜いた部分を以下の作業を行った上でCSVファイルに保存。

  い:;,に置換

6:エクセルでCSVファイルを開く

以下のように編集する。

ポイント指定部

 

4.5

-2.34

-2.61

;0

 

4.5

-2.34

2.61

;1

以下略

テクスチャ貼り付け部

poly( a

3

2

1

0

);

 

 

 

 

 

 

 

 

poly( a

11

10

9

8

);

 

 

 

 

 

 

 

 

poly( a

12

10

11

6

);

 

 

 

 

 

 

 

 

poly( a

15

14

3

13

);

 

 

 

 

 

 

 

 

poly( a

17

16

1

2

);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bitmap( kawara2.PAT 0 0 0 0 )

 

 

 

 

 

 

 

 

 

 

 

texpoly( a

18

0

190

19

119

129

20

137

129

21

255

190

);Kawarayane

texpoly( a

22

0

190

23

119

129

24

137

129

25

255

190

);

texpoly( a

26

107

196

27

0

251

28

215

251

);

 

 

 

texpoly( a

29

107

196

30

0

251

31

215

251

);

 

 

 

以下略

 

 

 

 

 

 

 

 

 

この際、必要ならポイントをいくつかのパーツへ切り分けしてもよい。

7:コピーするSCMファイルを用意テキストエディタで開く。

※テキストエディタ以外で開くと、コピーする際罫線が化けて出るおそれあり。

Area( 5 %1 %2 %7 )

IfVarRange( : 346 %5 4 )

     PerspectiveCall( :ob1_pc01 )

     Jump( : )

:ob1_pc01

Perspective

mif( %8 )

    RefPoint( 2 :ob1_SubEnd  %4 %1 %2 E= %8  v1= %6 v2= 100 )

melse

    RefPoint( 7 :ob1_SubEnd  %4 %1 %2 v1= %6 v2= 100 )

mifend

RotatedCall( :ob1_b1 0 0 %3 )

:ob1_SubEnd

    Return

:ob1_b1

    ShadowCall( :ob1_b2 )

:ob1_b2

    VectorJump( :ob1_West  32767 0     0  0 )

    VectorJump( :ob1_SouthEast  0    0   32767  0 )

:ob1_NorthEast

    Call( :ob1_module01 )   ;

    TransformCall( :ob1_module02 0 0 0 0 0 0 0 90 0 )   ;

Return

:ob1_SouthEast

    TransformCall( :ob1_module02 0 0 0 0 0 0 0 90 0 )   ;

    Call( :ob1_module01 )   ;

Return

:ob1_West

    VectorJump( :ob1_SouthWest 0   0    32767  0 )

:ob1_NorthWest

    Call( :ob1_module01 )   ;

    TransformCall( :ob1_module02 0 0 0 0 0 0 0 90 0 )   ;

Return

:ob1_SouthWest

    Call( :ob1_module01 )   ;

    TransformCall( :ob1_module02 0 0 0 0 0 0 0 90 0 )   ;

Return

;

; Module description:

;

:ob1_module01

Points( 0

<ここにポイント指定部を記述>

)

<ここにテクスチャ貼り付け部を記述>

Return

必要に応じて繰り返す。

EndA

8:指定の場所に記述したら、あとはSCMファイルを親SCMファイルで指定するか、経緯度、大きさなどを

自分で指定し、SCASMなどでコンパイルすれば完成。

 

沖縄都市フロントページに戻ります。