AFsoft World

AF日記。 コンピュータ・CAD・漫画・アニメ・ゲーム・スポーツ等についてのたわいもない話、などなど。

【Script!3D】

[GSU] 線の押し出し

まぁ確かに、線を選択して プッシュプルしたら 面になる
っていう事が出来ると やりやすい局面っていうのは
確かにあるんじゃないかなと思うことはありますね。

でもまぁ出来なければ出来ないで、面で作業をしたあと
不要な面を後で消す、とすればいいだけなんだけども。

だからうちの「Script!3D」では、線を押し出ししたら面にしたり
点を押し出ししたら線にする、って事が出来るようにしてます。

まぁこれは、マウスで自由に選択をして削除する、みたいな操作が Script!3Dでは出来ないので(※座標指定で選択をして消すという事や、何番目の図形を消す、という事は出来る)、作業をしておいて後で消す、ということをしなくても良いように なるべく1回で描けるように みたいな意図はあるんだけれども、でも、複雑な図形になってくるとやっぱり、画面描画&操作が出来ないとつらいなぁと思うこともしばしば。

というわけで Script!3D でベジェ&Bスプライン曲線の作図を2

前回の続き。
3次Bスプラインで6点を取りたい場合は、こんな感じ。
// Bスプライン曲線
#VAR
 x1 = 0  ;*x1
 y1 = 0  ;*y1
 z1 = 30  ;*z1
 x2 = 100  ;*x2
 y2 = 0  ;*y2
 z2 = 0  ;*z2
 x3 = 50  ;*x3
 y3 = 100  ;*y3
 z3 = 20  ;*z3
 x4 = 100  ;*x4
 y4 = 10  ;*y4
 z4 = 30  ;*z4
 x4 = 30  ;*x4
 y4 = 10  ;*y4
 z4 = 30  ;*z4
 x5 = 70  ;*x5
 y5 = 60  ;*y5
 z5 = 80  ;*z5
 x6 = 20  ;*x6
 y6 = 100  ;*y6
 z6 = 20  ;*z6
col1 = 1  ;*線色1
 i

#DRAW
PEN col1
3BSPL3DS i,SetCrvSep,1,x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4
3BSPL3DS i,SetCrvSep,0,x2,y2,z2, x3,y3,z3, x4,y4,z4, x5,y5,z5
3BSPL3DS i,SetCrvSep,2,x3,y3,z3, x4,y4,z4, x5,y5,z5, x6,y6,z6
これを実行すると
20110722c
という具合。
この曲線をパスとして、円をスイープするとします。
// Bスプライン曲線
#VAR
 x1 = 0  ;*x1
 y1 = 0  ;*y1
 z1 = 30  ;*z1
 x2 = 100  ;*x2
 y2 = 0  ;*y2
 z2 = 0  ;*z2
 x3 = 50  ;*x3
 y3 = 100  ;*y3
 z3 = 20  ;*z3
 x4 = 100  ;*x4
 y4 = 10  ;*y4
 z4 = 30  ;*z4
 x4 = 30  ;*x4
 y4 = 10  ;*y4
 z4 = 30  ;*z4
 x5 = 70  ;*x5
 y5 = 60  ;*y5
 z5 = 80  ;*z5
 x6 = 20  ;*x6
 y6 = 100  ;*y6
 z6 = 20  ;*z6
col1 = 1  ;*線色1
col2 = 2  ;*線色2
 i
 w1
 w2
 w3
 R = 10   ;*半径

#DRAW
PEN col1
3BSPL3DS i,SetCrvSep,1,x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4
3BSPL3DS i,SetCrvSep,0,x2,y2,z2, x3,y3,z3, x4,y4,z4, x5,y5,z5
3BSPL3DS i,SetCrvSep,2,x3,y3,z3, x4,y4,z4, x5,y5,z5, x6,y6,z6

 INIMATR
 RLSEL1 i,-1,-1,0, x1,y1,z1, 0.001, 1,1,999,999 // 連続線検索&作図&選択
 RENCLR  // 連続線データ・クリア
 RENSET  // 選択図形→連続線セット
 // 断面を作成
 MATRIXL x1,y1,z1
 CAL w1 = -90/180*PI
 ROYMATR w1
 PEN col2
 CIRCLE2D i,SetArcSep, 0,0,R
 CAL w1 = x1
 CAL w2 = y1 + R
 CAL w3 = z1
 RLSEL1 i,-1,-1,0, w1,w2,w3, 0.001, 1,1,999,col2
 // スイープ開始
 R_SWEPS 0,-1,-1, 1,1
 // 線を消します
 ALLSEL i,1,1,999,999  // 選択
 S_DELE
これを実行すると
20110722d
こんな感じ。
YZ平面に円を描いてスイープしているので、最初はX軸方向へスイープさせないと断面の円が楕円っぽくなってしまいますけれども。

で、これをスケッチアップへ送信。
20110722e
スケッチアップ8ではインポートするとコンポーネント化?されているようなので、その中へ編集状態にして、断面の円を消して、ソフトニングした結果がこれ。
20110722f
こんな感じ。

まぁ、GUIじゃないので使いにくいから、使えない、と判断されるでしょうけれども、とりあえず、こんな感じ。

というわけで Script!3D でベジェ&Bスプライン曲線の作図を

取りあえずテスト。
// ベジェ曲線&Bスプライン曲線1
#VAR
 x1 = 0      ;*x1
 y1 = 0      ;*y1
 z1 = 10      ;*z1
 x2 = 100      ;*x2
 y2 = 100      ;*y2
 z2 = 0      ;*z2
 x3 = 50      ;*x3
 y3 = 50      ;*y3
 z3 = 60      ;*z3
 x4 = 100      ;*x4
 y4 = 10      ;*y4
 z4 = 30      ;*z4
 col1 = 1      ;*線色1
 col2 = 2      ;*線色2
 col3 = 3      ;*線色3
 col4 = 4      ;*線色4
 i

#DRAW
PEN col1
BEZIR3DS i,SetCrvSep,x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4

PEN col2
2BSPL3DS i,SetCrvSep,x1,y1,z1, x2,y2,z2, x3,y3,z3

PEN col3
3BSPL3DS i,SetCrvSep,3,x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4

PEN col4
 LINE3D i,x1,y1,z1, x2,y2,z2
 LINE3D i,x2,y2,z2, x3,y3,z3
 LINE3D i,x3,y3,z3, x4,y4,z4
これを実行すると
20110722a
こんな感じ。ちょっと分かりにくいと思うけども。
というわけで、ベジェ、2次Bスプライン、3次Bスプラインで、各座標をX,Y,Z で指定出来るようにしてみました。ベジェは、始点・制御点1・制御点2・終点、の指定。2次Bスプラインは始点・制御点・終点の指定。3次Bスプラインは、始点・制御点1・制御点2・終点、の指定です。

3次Bスプライン曲線で、5点指定をしたい場合は下記のようにします。
// Bスプライン曲線2
#VAR
 x1 = 0  ;*x1
 y1 = 0  ;*y1
 z1 = 10  ;*z1
 x2 = 100  ;*x2
 y2 = 100  ;*y2
 z2 = 0  ;*z2
 x3 = 50  ;*x3
 y3 = 50  ;*y3
 z3 = 60  ;*z3
 x4 = 100  ;*x4
 y4 = 10  ;*y4
 z4 = 30  ;*z4
 x4 = 30  ;*x4
 y4 = 10  ;*y4
 z4 = 30  ;*z4
 x5 = 70  ;*x5
 y5 = 60  ;*y5
 z5 = 80  ;*z5
col1 = 1  ;*線色1
col2 = 2  ;*線色2
 i
#DRAW
PEN col1
 LINE3D i,x1,y1,z1, x2,y2,z2
 LINE3D i,x2,y2,z2, x3,y3,z3
 LINE3D i,x3,y3,z3, x4,y4,z4
 LINE3D i,x4,y4,z4, x5,y5,z5

PEN col2
3BSPL3DS i,SetCrvSep,1,x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4
3BSPL3DS i,SetCrvSep,2,x2,y2,z2, x3,y3,z3, x4,y4,z4, x5,y5,z5
これを実行すると、
20110722b
という感じ。

Script!3D Ver.1.21 更新

当方のシェアウェア・コーナーにて
  「Script!3D Ver.1.21」
試用版をアップしました。

このソフトウェアは、スクリプトから3次元図形の作成を行い、3D-DXF(3DFACE)、OBJ、STL、VRML(2.0)、X3D、COLLADA(DAE)、BMPファイル出力をするためのプログラムです。

Ver.1.21 2011/07/22 更新
・以下の命令を追加しました
  BEZIR3DS、2BSPL3DS、3BSPL3DS


あわせて フリーウェア「Script!3D Runner」も更新しました。

3Dでのベジェ曲線、スプライン曲線

はい、タコですtako
タコなので もっとたこさんやりますtako
(↑ちょっと、うざいぞ)

建築資料館の掲示板で下記のような質問がありました。
装置の中の空気配管(ゴムホース)を書いていて困ってしまいました。
カキッと整列した配管はフォローミーツールを駆使してなんとか書けてしまうんですが、ゴムホースのようなくにゃくにゃ曲がる管路をきれいに書けないかと思ってます。やはり3D空間のA点からB点まできれいなカーブでできないものかと。ベジェ曲線のプラグインもつかってあれこれやりましたがうまくいきませんでした。
最終イメージ的には、DVDレコーダーの裏、接続図らしく書く時のコード類の表現ですね。かなりテクニック的なことですが、何か妙案や私はこんな書き方してるという諸先輩のヒントやご意見いただければありがたいのですが。
http://www.ath-j.com/cbbs2/cbbs.cgi?mode=all&namber=2657&type=0&space=0&no=19
これはコメント(Q&AのA)じゃないので もとより、コメントはできませんが、取りあえず くにゃくにゃ曲がるということであれば、ベジェ曲線やスプライン曲線という事になるでしょうね。というわけで、Script!3D にもベジェ曲線やスプライン曲線というのはあるんですが、これは、平面上での曲線作図になってます。(3D)って書いているほうの命令も、高さを指定出来るというだけで、平面上での作図ですね。そぉいえば、各点をX,Y,Z で指定出来るというパターンを 作ってませんでした。これでは、この質問のネタを Script!3D で作るってことは出来ないです。
う〜む・・・
作るか?tako
まぁ、時間があって、気が向いたときにでも・・・

[JWW] OpenGLで 3D表示?

Jw_cad作者さんのサイトの掲示板で以下のような書き込みがありました。
VisualBasicでJwwのデータを有効利用できないかをテーマに研究しているHiroCom777です
。今まで開発してきたソースリストを利用してExcelの表をJwwデータに変換してクリップボードに送るExcelマクロを作ってみました。ソースリストも公開しています。興味のある方はダウンロードしてみてください。
http://hpcgi2.nifty.com/jw_cad/c-board.cgi?cmd=one;no=18281;id=003
エクセル→(表)→Jw_cad のエクセルマクロといえば
土器手氏のが有名ですけど
http://www.farchi.jp/filemgmt/index.php?id=167
こちらと どう違うのか メリット・デメリット等 使用方法など
そういうのを説明されたほうがいいと思うし、
ソースリスト公開 っていうのは逆に、プログラミングが分からないとダメなのか?みたいな先入観を与えるかもしれないので、なんつーか、普通に、ダウンロードして、こうやったら簡単に出来ますよ・こういう作図が出来ますよ的なことを書かれるのが良いような気はします。

私はエクセルとかエクセルマクロとか知らないんで、
http://p-cata.from.tv/jwwgapp/p107.html
でお茶を濁します。
まぁ、こういうのが気楽でいいかな、とか、マクロ等は無関係なので OpenOffice.Calc とかでも使えるし、こういうのは これはこれでいいかな、とか思いますけど。(利用されてる人は居ないかもしれないけど)

で、
HiroCom777さんのサイトに久しぶりに行って、掲示板を見ると
OpenGLで3D表示?
2D絵であればうちの jww2sc、Script!3Dを使えば
20110521aみたいな事は出来ますけれども(※文字は出ません)、こういう事なら出来ますけれども、しかしやっぱ、2.5D を OpenGLで 3D表示、っていうのが面白いでしょうね〜。2.5Dはちょっと複雑なので私はやってませんけど。えっと、2.5D文字と、レイヤ名の2.5D文字と、線色5の点・補助線種の線・線色6の点、だっけ? 以前、Script! で遊んでいたときに少し見ただけで、もうすっかり忘れていますけれども。

Script!3D Ver.1.20 更新

当方のシェアウェア・コーナーにて
  「Script!3D Ver.1.20」
試用版をアップしました。

Ver.1.20 2011/05/11 更新
・s3tファイルを保存前に 3D画面を閉じるよう追加
・s3tファイル保存時のタイトル・コメントの冒頭「//」を除去
・SendKeyでの {TAB 3} のような特殊キー押し回数指定の機能を追加
・円外ソリッドの頂点計算の修正
・R付長方形等でRしか存在しないような図形の描画も許すよう修正


あわせて フリーウェア「Script!3D Runner」も更新しました。

[GSU+Script!3D] チューブ2

いささん版チューブ2  前回は1折パターンだったので今回は2折パターン
// s-line2
//
#VAR
 R = 50    ;*管半径
 ST_X =  0  ;*開始位置X
 ST_Y = 100  ;*開始位置Y
 ST_Z = 100  ;*開始位置Z
 L1 = 5000  ;*長さ1
 A1 =   0  ;*回転角1
 D1 = 1000  ;*間隔1
 R1 = 5000  ;*丸め1
 L2 = 5000  ;*長さ2
 A2 =  90  ;*回転角2
 D2 = 1000  ;*間隔2
 R2 = 5000  ;*丸め2
 L3 = 5000  ;*長さ3
 i
 w1
 w2
 w3
 w4
 wx
 wl
#DRAW
 #IF (R1 <= Abs(D1/2))
   BEEP
   MESSAGE "入力エラー","間隔1を小さくするか丸め1を大きくして下さい","",0,0
   #EXIT
 #END
 #IF (R2 <= Abs(D2/2))
   BEEP
   MESSAGE "入力エラー","間隔2を小さくするか丸め2を大きくして下さい","",0,0
   #EXIT
 #END
 LAYER 0
 PEN 1
 MATRIXL ST_X,ST_Y,ST_Z
 #IF (A1 <> 0.0)
  CAL w1 = A1/180.0*PI
  RLXMATR w1
 #END
 CAL wx = Sqrt(R1*R1 - (R1-Abs(D1/2))*(R1-Abs(D1/2)))
 CAL w1 = L1 - wx
 CAL w2 = 0.0
 LINE2D i,0,0, w1,w2
 CAL w1 = L1 - wx
 CAL w2 = R1
 CAL w3 = 1.5*PI
 CAL w4 = 1.5*PI + ATan(wx/(R1-Abs(D1/2)))
 ARC2D i,SetCorSep, w1,w2,R1,w3,w4
 CAL w1 = L1 + wx
 CAL w2 = D1 - R1
 CAL w3 = 0.5*PI
 CAL w4 = 0.5*PI + ATan(wx/(R1-Abs(D1/2)))
 ARC2D i,SetCorSep, w1,w2,R1,w3,w4
 CAL w1 = L1 + wx
 CAL w2 = D1
 MATRIXL w1,w2,0.0
 CAL wl = L2 - wx
 // ---
 #IF (A2 <> 0.0)
  CAL w1 = A2/180.0*PI
  RLXMATR w1
 #END
 CAL wx = Sqrt(R2*R2 - (R2-Abs(D2/2))*(R2-Abs(D2/2)))
 CAL w1 = wl - wx
 CAL w2 = 0.0
 LINE2D i,0,0, w1,w2
 CAL w1 = wl - wx
 CAL w2 = R2
 CAL w3 = 1.5*PI
 CAL w4 = 1.5*PI + ATan(wx/(R2-Abs(D2/2)))
 ARC2D i,SetCorSep, w1,w2,R2,w3,w4
 CAL w1 = wl + wx
 CAL w2 = D2 - R2
 CAL w3 = 0.5*PI
 CAL w4 = 0.5*PI + ATan(wx/(R2-Abs(D2/2)))
 ARC2D i,SetCorSep, w1,w2,R2,w3,w4
 CAL w1 = wl + wx
 CAL w2 = D2
 MATRIXL w1,w2,0.0
 CAL wl = L3 - wx
 CAL w1 = wl
 CAL w2 = 0.0
 LINE2D i,0,0, w1,w2

 // 〜〜〜〜〜これよりスイープを行って円管を作成〜〜〜〜〜

 INIMATR
 RLSEL1 i,-1,-1,0, ST_X,ST_Y,ST_Z, 0.001, 1,1,999,999 // 連続線検索&作図&選択
 RENCLR  // 連続線データ・クリア
 RENSET  // 選択図形→連続線セット
 // 断面を作成
 MATRIXL ST_X,ST_Y,ST_Z
 CAL w1 = -90/180*PI
 ROYMATR w1
 PEN 3
 CIRCLE2D i,SetArcSep, 0,0,R
 CAL w1 = ST_X
 CAL w2 = ST_Y + R
 CAL w3 = ST_Z
 RLSEL1 i,-1,-1,0, w1,w2,w3, 0.001, 1,1,999,3 // 線色3を選択
 // スイープ開始
 R_SWEPS 0,-1,-1, 1,1
 // 線を消します
 ALLSEL i,1,1,999,999  // 選択
 S_DELE
これを Script!3D に貼り付けて実行。すると・・・
20110411c
こんな感じ。スケッチアップ7 又は 8 を動かしておいた状態で、[GSU7出力] をして、スムージングした状態。
20110411d
こんな感じ。

最初は、パスになる線だけを出力していたんだけども、スケッチアップ7/8 で選択しようとすると、線がつながってない、とか言われて、PipeAlongPath が動かせなかった。あらためて、スケッチアップって、精度 粗いのね、とか思ってしまう。なので仕方なしに、円をスイープさせて 出力してます。
Script!3D はシェアウェアで、レジストしていない場合は面出力させていないので、レジストされていない方は確認出来ないと思いますけれども。

[GSU+Script!3D] チューブ1

そゆ訳で、いささん版・チューブ を Script!3D で作ってみました。
// s-line1
//
#VAR
 R = 50    ;*管半径
 ST_X =  0  ;*開始位置X
 ST_Y = 100  ;*開始位置Y
 ST_Z = 100  ;*開始位置Z
 L1 = 5000  ;*長さ1
 A1 =   0  ;*回転角1
 D1 = 1000  ;*間隔1
 R1 = 5000  ;*丸め1
 L2 = 5000  ;*長さ2
 i
 w1
 w2
 w3
 w4
 wx
 wl
#DRAW
 #IF (R1 <= Abs(D1/2))
   BEEP
   MESSAGE "入力エラー","間隔1を小さくするか丸め1を大きくして下さい","",0,0
   #EXIT
 #END
 LAYER 0
 PEN 1
 MATRIXL ST_X,ST_Y,ST_Z
 #IF (A1 <> 0.0)
  CAL w1 = A1/180.0*PI
  RLXMATR w1
 #END
 CAL wx = Sqrt(R1*R1 - (R1-Abs(D1/2))*(R1-Abs(D1/2)))
 CAL w1 = L1 - wx
 CAL w2 = 0.0
 LINE2D i,0,0, w1,w2
 CAL w1 = L1 - wx
 CAL w2 = R1
 CAL w3 = 1.5*PI
 CAL w4 = 1.5*PI + ATan(wx/(R1-Abs(D1/2)))
 ARC2D i,SetCorSep, w1,w2,R1,w3,w4
 CAL w1 = L1 + wx
 CAL w2 = D1 - R1
 CAL w3 = 0.5*PI
 CAL w4 = 0.5*PI + ATan(wx/(R1-Abs(D1/2)))
 ARC2D i,SetCorSep, w1,w2,R1,w3,w4
 CAL w1 = L1 + wx
 CAL w2 = D1
 MATRIXL w1,w2,0.0
 CAL wl = L2 - wx
 CAL w1 = wl
 CAL w2 = 0.0
 LINE2D i,0,0, w1,w2

 // 〜〜〜〜〜これよりスイープを行って円管を作成〜〜〜〜〜

 INIMATR
 RLSEL1 i,-1,-1,0, ST_X,ST_Y,ST_Z, 0.001, 1,1,999,999 // 連続線検索&作図&選択
 RENCLR  // 連続線データ・クリア
 RENSET  // 選択図形→連続線セット
 // 断面を作成
 MATRIXL ST_X,ST_Y,ST_Z
 CAL w1 = -90/180*PI
 ROYMATR w1
 PEN 3
 CIRCLE2D i,SetArcSep, 0,0,R
 CAL w1 = ST_X
 CAL w2 = ST_Y + R
 CAL w3 = ST_Z
 RLSEL1 i,-1,-1,0, w1,w2,w3, 0.001, 1,1,999,3 // 線色3を選択
 // スイープ開始
 R_SWEPS 0,-1,-1, 1,1
 // 線を消します
 ALLSEL i,1,1,999,999  // 選択
 S_DELE
これを うちの「Script!3D」に貼り付けて実行すると・・・
20110411a
こんな感じで、GSU7かGSU8を動かしておいて、Script!3Dで[GSU7] 出力をして、勝手にグループ化されているので、スムージングしたところ。
20110411b
こんな感じ

[Script!3D] 模擬的な人物?3Dモデル(4-4)

人物?らしき3Dモデル・その4-4。
前回の「その3-4」に 手と足に肘と膝の関節を追加したパターン。これまた、足を双方動かした場合は本当は高さを低くすべきですが、横着して、変えてません。
// 模擬的な人物モデル(04c)
//  頭(球)+胴体(楕円錐)+腕2(円柱)+足2(円柱)

#VAR
 col = 3    ;*線色
 tall = 170   ;*身長
 head = 30   ;*頭の大きさ
 body_x1 = 50  ;*体 上X
 body_y1 = 30  ;*体 上Y
 body_x2 = 10  ;*体 下X
 body_y2 = 5  ;*体 下Y
 body_z     ;*体Z
 arm_sp = 0  ;*腕 離す間隔
 arm_sz = 15  ;*腕 太さ
 arm_l1 = 25  ;*腕 長さ1
 arm_l2 = 35  ;*腕 長さ2
 arm_a11 = 0  ;*腕(+)角度1
 arm_a12 = 0  ;*腕(+)角度2
 arm_a13 = 0  ;*腕(+)角度3(関節)
 arm_a21 = 0  ;*腕(-)角度1
 arm_a22 = 0  ;*腕(-)角度2
 arm_a23 = 0  ;*腕(-)角度3(関節)
 leg_spx =10  ;*足 離す横間隔
 leg_spz = 2  ;*足 離す縦間隔
 leg_sz = 20  ;*足 太さ
 leg_l1 = 30  ;*足 長さ1
 leg_l2 = 45  ;*足 長さ2
 leg_a11 = 0  ;*足(+)角度1
 leg_a12 = 0  ;*足(+)角度2
 leg_a13 = 0  ;*足(+)角度3(関節)
 leg_a21 = 0  ;*足(-)角度1
 leg_a22 = 0  ;*足(-)角度2
 leg_a23 = 0  ;*足(-)角度3(関節)
 leg_l
 i
 j
 k
 w1
 w2
 w3
 w4
 w5
 ax1
 ay1
 az1
 ax2
 ay2
 az2
#DRAW
 CAL leg_l = leg_l1 + leg_l2
 CAL body_z = tall - head - leg_spz - leg_l
 
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz
 MATRIXO w1,w2,w3
 CAL w1 = body_x2/2
 CAL w2 = body_y2/2
 CAL w3 = body_x1/2
 CAL w4 = body_y1/2
 ETUBE i,SetArcSep, w1,w2,0,body_z, w3,w4,0, 0,0,1,1,0

 // 腕(X+)
 CAL w1 = body_x1/2 + arm_sp + arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 = arm_a12/180*PI
 CAL w5 = PI + arm_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = arm_sz/2
 CYLIND k,SetArcSep,w1,arm_l1, 1,1,0
 CAL j = k - SetArcSep + 1
 CLRSEL
 ADDSEL i,j,k,999,999,999,999
 // 関節部
 #IF (arm_a13 <> 0)
  CAL w1 = -arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 = arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = arm_a13/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜腕
 S_SWEP2 2,-1,-1, arm_l2

 // 腕(X-)
 CAL w1 =-body_x1/2 - arm_sp - arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 =-arm_a22/180*PI
 CAL w5 = PI + arm_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = arm_sz/2
 CYLIND k,SetArcSep,w1,arm_l1, 1,1,0
 CAL j = k - SetArcSep + 1
 CLRSEL
 ADDSEL i,j,k,999,999,999,999
 // 関節部
 #IF (arm_a23 <> 0)
  CAL w1 = -arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 = arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = arm_a23/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜腕
 S_SWEP2 2,-1,-1, arm_l2

 // 足(X+)
 CAL w1 = leg_sz/2 + leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 = leg_a12/180*PI
 CAL w5 = PI + leg_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = leg_sz/2
 CYLIND k,SetArcSep,w1,leg_l1, 1,1,0
 CAL j = k - SetArcSep + 1
 CLRSEL
 ADDSEL i,j,k,999,999,999,999
 // 関節部
 #IF (leg_a13 <> 0)
  CAL w1 = leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 =-leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = leg_a13/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜足
 S_SWEP2 2,-1,-1, leg_l2

 // 足(X-)
 CAL w1 =-leg_sz/2 - leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 =-leg_a22/180*PI
 CAL w5 = PI + leg_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = leg_sz/2
 CYLIND k,SetArcSep,w1,leg_l1, 1,1,0
 CAL j = k - SetArcSep + 1
 CLRSEL
 ADDSEL i,j,k,999,999,999,999
 // 関節部
 #IF (leg_a23 <> 0)
  CAL w1 = leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 =-leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = leg_a23/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜足
 S_SWEP2 2,-1,-1, leg_l2
実行
20101106g
正座〜

しかしこう考えると人間の身体って凄いな〜ってツクヅク思う

[Script!3D] 模擬的な人物?3Dモデル(4-3)

人物?らしき3Dモデル・その4-3。
前回の「その3-3」に 手と足に肘と膝の関節を追加したパターン。これまた、足を双方動かした場合は本当は高さを低くすべきですが、横着して、変えてません。
// 模擬的な人物モデル(03c)
//  頭(球)+胴体(四角錐)+腕2(直方体)+足2(直方体)

#VAR
 col = 3    ;*線色
 tall = 170   ;*身長
 head = 30   ;*頭の大きさ
 body_x1 = 40  ;*体 上X
 body_y1 = 20  ;*体 上Y
 body_x2 = 30  ;*体 下X
 body_y2 = 15  ;*体 下Y
 body_z     ;*体Z
 arm_sp = 0  ;*腕 離す間隔
 arm_sz = 10  ;*腕 太さ
 arm_l1 = 25  ;*腕 長さ1
 arm_l2 = 35  ;*腕 長さ2
 arm_a11 = 0  ;*腕(+)角度1
 arm_a12 = 0  ;*腕(+)角度2
 arm_a13 = 0  ;*腕(+)角度3(関節)
 arm_a21 = 0  ;*腕(-)角度1
 arm_a22 = 0  ;*腕(-)角度2
 arm_a23 = 0  ;*腕(-)角度3(関節)
 leg_spx = 6  ;*足 離す横間隔
 leg_spz = 2  ;*足 離す縦間隔
 leg_sz = 12  ;*足 太さ
 leg_l1 = 30  ;*足 長さ1
 leg_l2 = 45  ;*足 長さ2
 leg_a11 = 0  ;*足(+)角度1
 leg_a12 = 0  ;*足(+)角度2
 leg_a13 = 0  ;*足(+)角度3(関節)
 leg_a21 = 0  ;*足(-)角度1
 leg_a22 = 0  ;*足(-)角度2
 leg_a23 = 0  ;*足(-)角度3(関節)
 leg_l
 i
 j
 w1
 w2
 w3
 w4
 w5
 ax1
 ay1
 az1
 ax2
 ay2
 az2
#DRAW
 CAL leg_l = leg_l1 + leg_l2
 CAL body_z = tall - head - leg_spz - leg_l
 
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz
 MATRIXO w1,w2,w3
 CUBIC4 i,body_x2,body_y2, body_z, body_x1,body_y1, 0,0, 1,1,0

 // 腕(X+)
 CAL w1 = body_x1/2 + arm_sp + arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 = arm_a12/180*PI
 CAL w5 = PI + arm_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE j,arm_sz,arm_sz,arm_l1, 1,1,0
 CLRSEL
 ADDSEL i,j,j,999,999,999,999
 // 関節部
 #IF (arm_a13 <> 0)
  CAL w1 = -arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 = arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = arm_a13/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜腕
 S_SWEP2 2,-1,-1, arm_l2

 // 腕(X-)
 CAL w1 =-body_x1/2 - arm_sp - arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 =-arm_a22/180*PI
 CAL w5 = PI + arm_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE j,arm_sz,arm_sz,arm_l1, 1,1,0
 CLRSEL
 ADDSEL i,j,j,999,999,999,999
 // 関節部
 #IF (arm_a23 <> 0)
  CAL w1 = -arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 = arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = arm_a23/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜腕
 S_SWEP2 2,-1,-1, arm_l2

 // 足(X+)
 CAL w1 = leg_sz/2 + leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 = leg_a12/180*PI
 CAL w5 = PI + leg_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE j,leg_sz,leg_sz,leg_l1, 1,1,0
 CLRSEL
 ADDSEL i,j,j,999,999,999,999
 // 関節部
 #IF (leg_a13 <> 0)
  CAL w1 = leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 =-leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = leg_a13/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜足
 S_SWEP2 2,-1,-1, leg_l2

 // 足(X-)
 CAL w1 =-leg_sz/2 - leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 =-leg_a22/180*PI
 CAL w5 = PI + leg_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE j,leg_sz,leg_sz,leg_l1, 1,1,0
 CLRSEL
 ADDSEL i,j,j,999,999,999,999
 // 関節部
 #IF (leg_a23 <> 0)
  CAL w1 = leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 =-leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = leg_a23/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜足
 S_SWEP2 2,-1,-1, leg_l2
実行
両腕の角度を 135、30、30、
足1つを 90、20、120 として実行
20101106f
はぁっ!!

[Script!3D] 模擬的な人物?3Dモデル(4-2)

人物?らしき3Dモデル・その4-2。
前回の「その3-2」に 手と足に肘と膝の関節を追加したパターン。これまた、足を双方動かした場合は本当は高さを低くすべきですが、横着して、変えてません。
// 模擬的な人物モデル(02c)
//  頭(球)+胴体(楕円柱)+腕2(円柱)+足2(円柱)

#VAR
 col = 3    ;*線色
 tall = 170   ;*身長
 head = 30   ;*頭の大きさ
 body_x = 50  ;*体X
 body_y = 30  ;*体Y
 body_z     ;体Z
 arm_sp = 1  ;*腕 離す間隔
 arm_sz = 15  ;*腕 太さ
 arm_l1 = 25  ;*腕 長さ1
 arm_l2 = 35  ;*腕 長さ2
 arm_a11 = 0  ;*腕(+)角度1
 arm_a12 = 0  ;*腕(+)角度2
 arm_a13 = 0  ;*腕(+)角度3(関節)
 arm_a21 = 0  ;*腕(-)角度1
 arm_a22 = 0  ;*腕(-)角度2
 arm_a23 = 0  ;*腕(-)角度3(関節)
 leg_spx =10  ;*足 離す横間隔
 leg_spz = 2  ;*足 離す縦間隔
 leg_sz = 20  ;*足 太さ
 leg_l1 = 30  ;*足 長さ1
 leg_l2 = 45  ;*足 長さ2
 leg_a11 = 0  ;*足(+)角度1
 leg_a12 = 0  ;*足(+)角度2
 leg_a13 = 0  ;*足(+)角度3(関節)
 leg_a21 = 0  ;*足(-)角度1
 leg_a22 = 0  ;*足(-)角度2
 leg_a23 = 0  ;*足(-)角度3(関節)
 leg_l
 i
 j
 k
 w1
 w2
 w3
 w4
 w5
 ax1
 ay1
 az1
 ax2
 ay2
 az2
#DRAW
 CAL leg_l = leg_l1 + leg_l2
 CAL body_z = tall - head - leg_spz - leg_l
 
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz
 MATRIXO w1,w2,w3
 CAL w1 = body_x/2
 CAL w2 = body_y/2
 ECYLIND i,SetArcSep, w1,w2,0,body_z, 1,1,0

 // 腕(X+)
 CAL w1 = body_x/2 + arm_sp + arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 = arm_a12/180*PI
 CAL w5 = PI + arm_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = arm_sz/2
 CYLIND k,SetArcSep,w1,arm_l1, 1,1,0
 CAL j = k - SetArcSep + 1
 CLRSEL
 ADDSEL i,j,k,999,999,999,999
 // 関節部
 #IF (arm_a13 <> 0)
  CAL w1 = -arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 = arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = arm_a13/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜腕
 S_SWEP2 2,-1,-1, arm_l2

 // 腕(X-)
 CAL w1 =-body_x/2 - arm_sp - arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 =-arm_a22/180*PI
 CAL w5 = PI + arm_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = arm_sz/2
 CYLIND k,SetArcSep,w1,arm_l1, 1,1,0
 CAL j = k - SetArcSep + 1
 CLRSEL
 ADDSEL i,j,k,999,999,999,999
 // 関節部
 #IF (arm_a23 <> 0)
  CAL w1 = -arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 = arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = arm_a23/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜腕
 S_SWEP2 2,-1,-1, arm_l2

 // 足(X+)
 CAL w1 = leg_sz/2 + leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 = leg_a12/180*PI
 CAL w5 = PI + leg_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = leg_sz/2
 CYLIND k,SetArcSep,w1,leg_l1, 1,1,0
 CAL j = k - SetArcSep + 1
 CLRSEL
 ADDSEL i,j,k,999,999,999,999
 // 関節部
 #IF (leg_a13 <> 0)
  CAL w1 = leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 =-leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = leg_a13/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜足
 S_SWEP2 2,-1,-1, leg_l2

 // 足(X-)
 CAL w1 =-leg_sz/2 - leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 =-leg_a22/180*PI
 CAL w5 = PI + leg_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = leg_sz/2
 CYLIND k,SetArcSep,w1,leg_l1, 1,1,0
 CAL j = k - SetArcSep + 1
 CLRSEL
 ADDSEL i,j,k,999,999,999,999
 // 関節部
 #IF (leg_a23 <> 0)
  CAL w1 = leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 =-leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = leg_a23/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜足
 S_SWEP2 2,-1,-1, leg_l2

実行して、角度を 30、20、30、と 両腕両足に指定した場合
20101106e
ど〜んと来い!

[Script!3D] 模擬的な人物?3Dモデル(4-1)

人物?らしき3Dモデル・その4-1。
頭と胴体に手と足をつけたものに
手と足に肘と膝の関節を追加したパターン。
足を双方動かした場合は本当は高さを低くすべきですが、横着して、変えてません。
// 模擬的な人物モデル(01c)
//  頭(球)+胴体(直方体)+腕2(直方体)+足2(直方体)

#VAR
 col = 3    ;*線色
 tall = 170   ;*身長
 head = 30   ;*頭の大きさ
 body_x = 40  ;*体X
 body_y = 20  ;*体Y
 body_z     ;体Z
 arm_sp = 2  ;*腕 離す間隔
 arm_sz = 10  ;*腕 太さ
 arm_l1 = 25  ;*腕 長さ1
 arm_l2 = 35  ;*腕 長さ2
 arm_a11 = 0  ;*腕(+)角度1
 arm_a12 = 0  ;*腕(+)角度2
 arm_a13 = 0  ;*腕(+)角度3(関節)
 arm_a21 = 0  ;*腕(-)角度1
 arm_a22 = 0  ;*腕(-)角度2
 arm_a23 = 0  ;*腕(-)角度3(関節)
 leg_spx =10  ;*足 離す横間隔
 leg_spz = 2  ;*足 離す縦間隔
 leg_sz = 15  ;*足 太さ
 leg_l1 = 30  ;*足 長さ1
 leg_l2 = 45  ;*足 長さ2
 leg_a11 = 0  ;*足(+)角度1
 leg_a12 = 0  ;*足(+)角度2
 leg_a13 = 0  ;*足(+)角度3(関節)
 leg_a21 = 0  ;*足(-)角度1
 leg_a22 = 0  ;*足(-)角度2
 leg_a23 = 0  ;*足(-)角度3(関節)
 leg_l
 i
 j
 w1
 w2
 w3
 w4
 w5
 ax1
 ay1
 az1
 ax2
 ay2
 az2
#DRAW
 CAL leg_l = leg_l1 + leg_l2
 CAL body_z = tall - head - leg_spz - leg_l
 
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz
 MATRIXO w1,w2,w3
 CUBE i,body_x,body_y,body_z, 1,1,0

 // 腕(X+)
 CAL w1 = body_x/2 + arm_sp + arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 = arm_a12/180*PI
 CAL w5 = PI + arm_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE j,arm_sz,arm_sz,arm_l1, 1,1,0
 CLRSEL
 ADDSEL i,j,j,999,999,999,999
 // 関節部
 #IF (arm_a13 <> 0)
  CAL w1 = -arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 = arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = arm_a13/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜腕
 S_SWEP2 2,-1,-1, arm_l2

 // 腕(X-)
 CAL w1 =-body_x/2 - arm_sp - arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 =-arm_a22/180*PI
 CAL w5 = PI + arm_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE j,arm_sz,arm_sz,arm_l1, 1,1,0
 CLRSEL
 ADDSEL i,j,j,999,999,999,999
 // 関節部
 #IF (arm_a23 <> 0)
  CAL w1 = -arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 = arm_sz/2
  CAL w2 = -arm_sz/2
  CAL w3 = arm_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = arm_a23/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜腕
 S_SWEP2 2,-1,-1, arm_l2

 // 足(X+)
 CAL w1 = leg_sz/2 + leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 = leg_a12/180*PI
 CAL w5 = PI + leg_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE j,leg_sz,leg_sz,leg_l1, 1,1,0
 CLRSEL
 ADDSEL i,j,j,999,999,999,999
 // 関節部
 #IF (leg_a13 <> 0)
  CAL w1 = leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 =-leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = leg_a13/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜足
 S_SWEP2 2,-1,-1, leg_l2

 // 足(X-)
 CAL w1 =-leg_sz/2 - leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 =-leg_a22/180*PI
 CAL w5 = PI + leg_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE j,leg_sz,leg_sz,leg_l1, 1,1,0
 CLRSEL
 ADDSEL i,j,j,999,999,999,999
 // 関節部
 #IF (leg_a23 <> 0)
  CAL w1 = leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax1,ay1,az1, w1,w2,w3
  CAL w1 =-leg_sz/2
  CAL w2 = leg_sz/2
  CAL w3 = leg_l1
  GETL2W ax2,ay2,az2, w1,w2,w3
  CAL w1 = leg_a23/180*PI
  S_ROT1 2,-1,-1,4, ax1,ay1,az1, ax2,ay2,az2, w1
 #END
 // 関節〜足
 S_SWEP2 2,-1,-1, leg_l2

これを実行すると、
20101105a
両方の腕の角度1,2をそれぞれ「30」
両方の足の角度2をそれぞれ「20」で実行
20101105b
両方の腕の角度3をそれぞれ「45」
両方の足の角度3をそれぞれ「20」
足(+)角度1を「-30」、足(+)角度1を「30」で実行
20101105c
スケッチアップ8へ出力
20101105d
ソフトニング
20101105e
右クリックしてコンポーネント保存をしたら、36KB。

[Script!3D] 模擬的な人物?3Dモデル・・・

というわけで、模擬的な人物?3Dモデル では、腕と足は角度を指定することで動かせるようにしてます。肘・膝の関節はありません。
その4-3 にて 角度をテキトウに指定
20101103m
[GSU7]ボタンをクリック
これは COLLADA で出力するようになってますので、スケッチアップ8(英語版 Free)でも動作します。(※日本語版の場合には送信キーを書き換える必要があるかもしれません:入れてないので試してません)
20101103n
これで要素数294。
skp保存すると 31KB になってました。

その4-2 にて 腕の第1角度を90°に指定
20101103o
スケッチアップ8へ
20101103p
要素数は 454。
skp保存をすると 42KB になってました。

ソフトニングを掛けたところ
20101103q
skp保存をすると なぜか 38KB になってました。
なんで減るんだろう?

でもこんないい加減なモデルでも要素数はどんどん増えていきそうだなぁ〜

[Script!3D] 模擬的な人物?3Dモデル(3-4)

人物?らしき3Dモデル・その3-4。
頭と胴体に手と足をつけたパターン。
足を双方動かした場合は本当は高さを低くすべきですが、横着して、変えてません。
逆楕円錐の底面は モデルとして笑えるのでそのままにしてます。
// 模擬的な人物モデル(04b)
//  頭(球)+胴体(楕円錐)+腕(円柱)+足(円柱)

#VAR
 col = 3    ;*線色
 tall = 170   ;*身長
 head = 30   ;*頭の大きさ
 body_x1 = 50  ;*体 上X
 body_y1 = 30  ;*体 上Y
 body_x2 = 10  ;*体 下X
 body_y2 = 5  ;*体 下Y
 body_z     ;*体Z
 arm_sp = 0  ;*腕 離す間隔
 arm_sz = 15  ;*腕 太さ
 arm_l = 60  ;*腕 長さ
 arm_a11 = 0  ;*腕(+)角度1
 arm_a12 = 0  ;*腕(+)角度2
 arm_a21 = 0  ;*腕(-)角度1
 arm_a22 = 0  ;*腕(-)角度2
 leg_spx =10  ;*足 離す横間隔
 leg_spz = 2  ;*足 離す縦間隔
 leg_sz = 20  ;*足 太さ
 leg_l = 75  ;*足 長さ
 leg_a11 = 0  ;*足(+)角度1
 leg_a12 = 0  ;*足(+)角度2
 leg_a21 = 0  ;*足(-)角度1
 leg_a22 = 0  ;*足(-)角度2
 i
 w1
 w2
 w3
 w4
 w5
#DRAW
 CAL body_z = tall - head - leg_spz - leg_l
 
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz
 MATRIXO w1,w2,w3
 CAL w1 = body_x2/2
 CAL w2 = body_y2/2
 CAL w3 = body_x1/2
 CAL w4 = body_y1/2
 ETUBE i,SetArcSep, w1,w2,0,body_z, w3,w4,0, 0,0,1,1,0

 // 腕(X+)
 CAL w1 = body_x1/2 + arm_sp + arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 = arm_a12/180*PI
 CAL w5 = PI + arm_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = arm_sz/2
 CYLIND i,SetArcSep,w1,arm_l, 1,1,0

 // 腕(X-)
 CAL w1 =-body_x1/2 - arm_sp - arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 =-arm_a22/180*PI
 CAL w5 = PI + arm_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = arm_sz/2
 CYLIND i,SetArcSep,w1,arm_l, 1,1,0

 // 足(X+)
 CAL w1 = leg_sz/2 + leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 = leg_a12/180*PI
 CAL w5 = PI + leg_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = leg_sz/2
 CYLIND i,SetArcSep,w1,leg_l, 1,1,0

 // 足(X-)
 CAL w1 =-leg_sz/2 - leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 =-leg_a22/180*PI
 CAL w5 = PI + leg_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = leg_sz/2
 CYLIND i,SetArcSep,w1,leg_l, 1,1,0

20101103l

[Script!3D] 模擬的な人物?3Dモデル(3-3)

人物?らしき3Dモデル・その3-3。
頭と胴体に手と足をつけたパターン。
足を双方動かした場合は本当は高さを低くすべきですが、横着して、変えてません。
逆四角錐の底面を大きくしてます。
// 模擬的な人物モデル(03b)
//  頭(球)+胴体(四角錐)+腕(直方体)+足(直方体)

#VAR
 col = 3    ;*線色
 tall = 170   ;*身長
 head = 30   ;*頭の大きさ
 body_x1 = 40  ;*体 上X
 body_y1 = 20  ;*体 上Y
 body_x2 = 30  ;*体 下X
 body_y2 = 15  ;*体 下Y
 body_z     ;*体Z
 arm_sp = 0  ;*腕 離す間隔
 arm_sz = 10  ;*腕 太さ
 arm_l = 60  ;*腕 長さ
 arm_a11 = 0  ;*腕(+)角度1
 arm_a12 = 0  ;*腕(+)角度2
 arm_a21 = 0  ;*腕(-)角度1
 arm_a22 = 0  ;*腕(-)角度2
 leg_spx = 6  ;*足 離す横間隔
 leg_spz = 2  ;*足 離す縦間隔
 leg_sz = 12  ;*足 太さ
 leg_l = 75  ;*足 長さ
 leg_a11 = 0  ;*足(+)角度1
 leg_a12 = 0  ;*足(+)角度2
 leg_a21 = 0  ;*足(-)角度1
 leg_a22 = 0  ;*足(-)角度2
 i
 w1
 w2
 w3
 w4
 w5
#DRAW
 CAL body_z = tall - head - leg_spz - leg_l
 
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz
 MATRIXO w1,w2,w3
 CUBIC4 i,body_x2,body_y2, body_z, body_x1,body_y1, 0,0, 1,1,0

 // 腕(X+)
 CAL w1 = body_x1/2 + arm_sp + arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 = arm_a12/180*PI
 CAL w5 = PI + arm_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE i,arm_sz,arm_sz,arm_l, 1,1,0

 // 腕(X-)
 CAL w1 =-body_x1/2 - arm_sp - arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 =-arm_a22/180*PI
 CAL w5 = PI + arm_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE i,arm_sz,arm_sz,arm_l, 1,1,0

 // 足(X+)
 CAL w1 = leg_sz/2 + leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 = leg_a12/180*PI
 CAL w5 = PI + leg_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE i,leg_sz,leg_sz,leg_l, 1,1,0

 // 足(X-)
 CAL w1 =-leg_sz/2 - leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 =-leg_a22/180*PI
 CAL w5 = PI + leg_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE i,leg_sz,leg_sz,leg_l, 1,1,0

20101103k

[Script!3D] 模擬的な人物?3Dモデル(3-2)

人物?らしき3Dモデル・その3-2。
頭と胴体に手と足をつけたパターン。
足を双方動かした場合は本当は高さを低くすべきですが、横着して、変えてません。
// 模擬的な人物モデル(02b)
//  頭(球)+胴体(楕円柱)+腕(円柱)+足(円柱)

#VAR
 col = 3    ;*線色
 tall = 170   ;*身長
 head = 30   ;*頭の大きさ
 body_x = 50  ;*体X
 body_y = 30  ;*体Y
 body_z     ;体Z
 arm_sp = 1  ;*腕 離す間隔
 arm_sz = 15  ;*腕 太さ
 arm_l = 60   ;*腕 長さ
 arm_a11 = 0  ;*腕(+)角度1
 arm_a12 = 0  ;*腕(+)角度2
 arm_a21 = 0  ;*腕(-)角度1
 arm_a22 = 0  ;*腕(-)角度2
 leg_spx =10  ;*足 離す横間隔
 leg_spz = 2  ;*足 離す縦間隔
 leg_sz = 20  ;*足 太さ
 leg_l = 75  ;*足 長さ
 leg_a11 = 0  ;*足(+)角度1
 leg_a12 = 0  ;*足(+)角度2
 leg_a21 = 0  ;*足(-)角度1
 leg_a22 = 0  ;*足(-)角度2
 i
 w1
 w2
 w3
 w4
 w5
#DRAW
 CAL body_z = tall - head - leg_spz - leg_l
 
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz
 MATRIXO w1,w2,w3
 CAL w1 = body_x/2
 CAL w2 = body_y/2
 ECYLIND i,SetArcSep, w1,w2,0,body_z, 1,1,0

 // 腕(X+)
 CAL w1 = body_x/2 + arm_sp + arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 = arm_a12/180*PI
 CAL w5 = PI + arm_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = arm_sz/2
 CYLIND i,SetArcSep,w1,arm_l, 1,1,0

 // 腕(X-)
 CAL w1 =-body_x/2 - arm_sp - arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 =-arm_a22/180*PI
 CAL w5 = PI + arm_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = arm_sz/2
 CYLIND i,SetArcSep,w1,arm_l, 1,1,0

 // 足(X+)
 CAL w1 = leg_sz/2 + leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 = leg_a12/180*PI
 CAL w5 = PI + leg_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = leg_sz/2
 CYLIND i,SetArcSep,w1,leg_l, 1,1,0

 // 足(X-)
 CAL w1 =-leg_sz/2 - leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 =-leg_a22/180*PI
 CAL w5 = PI + leg_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = leg_sz/2
 CYLIND i,SetArcSep,w1,leg_l, 1,1,0

20101103j

[Script!3D] 模擬的な人物?3Dモデル(3-1)

人物?らしき3Dモデル・その3-1。
頭と胴体に手と足をつけたパターン。
足を双方動かした場合は本当は高さを低くすべきですが、横着して、変えてません。
// 模擬的な人物モデル(01b)
//  頭(球)+胴体(直方体)+腕(直方体)+足(直方体)

#VAR
 col = 3    ;*線色
 tall = 170   ;*身長
 head = 30   ;*頭の大きさ
 body_x = 40  ;*体X
 body_y = 20  ;*体Y
 body_z     ;体Z
 arm_sp = 2  ;*腕 離す間隔
 arm_sz = 10  ;*腕 太さ
 arm_l = 60  ;*腕 長さ
 arm_a11 = 0  ;*腕(+)角度1
 arm_a12 = 0  ;*腕(+)角度2
 arm_a21 = 0  ;*腕(-)角度1
 arm_a22 = 0  ;*腕(-)角度2
 leg_spx =10  ;*足 離す横間隔
 leg_spz = 2  ;*足 離す縦間隔
 leg_sz = 15  ;*足 太さ
 leg_l = 75  ;*足 長さ
 leg_a11 = 0  ;*足(+)角度1
 leg_a12 = 0  ;*足(+)角度2
 leg_a21 = 0  ;*足(-)角度1
 leg_a22 = 0  ;*足(-)角度2
 i
 w1
 w2
 w3
 w4
 w5
#DRAW
 CAL body_z = tall - head - leg_spz - leg_l
 
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz
 MATRIXO w1,w2,w3
 CUBE i,body_x,body_y,body_z, 1,1,0

 // 腕(X+)
 CAL w1 = body_x/2 + arm_sp + arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 = arm_a12/180*PI
 CAL w5 = PI + arm_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE i,arm_sz,arm_sz,arm_l, 1,1,0

 // 腕(X-)
 CAL w1 =-body_x/2 - arm_sp - arm_sz/2
 CAL w2 = 0
 CAL w3 = leg_l + leg_spz + body_z - arm_sz/2
 CAL w4 =-arm_a22/180*PI
 CAL w5 = PI + arm_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE i,arm_sz,arm_sz,arm_l, 1,1,0

 // 足(X+)
 CAL w1 = leg_sz/2 + leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 = leg_a12/180*PI
 CAL w5 = PI + leg_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE i,leg_sz,leg_sz,leg_l, 1,1,0

 // 足(X-)
 CAL w1 =-leg_sz/2 - leg_spx/2
 CAL w2 = 0
 CAL w3 = leg_l
 CAL w4 =-leg_a22/180*PI
 CAL w5 = PI + leg_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE i,leg_sz,leg_sz,leg_l, 1,1,0

20101103i

[Script!3D] 模擬的な人物?3Dモデル(2-4)

取りあえず、人物?らしき3Dモデル・その2-4。
頭と胴体に手をつけたパターン。
// 模擬的な人物モデル(04a)
//  頭(球)+胴体(楕円錐)+腕(円柱)

#VAR
 col = 3    ;*線色
 head = 30   ;*頭の大きさ
 body_x1 = 50  ;*体 上X
 body_y1 = 30  ;*体 上Y
 body_x2 = 10  ;*体 下X
 body_y2 = 5  ;*体 下Y
 body_z = 130  ;*体Z
 arm_sp = 0  ;*腕 離す間隔
 arm_sz = 15  ;*腕 太さ
 arm_l = 60   ;*腕 長さ
 arm_a11 = 0  ;*腕(+)角度1
 arm_a12 = 0  ;*腕(+)角度2
 arm_a21 = 0  ;*腕(-)角度1
 arm_a22 = 0  ;*腕(-)角度2
 i
 w1
 w2
 w3
 w4
 w5
#DRAW
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 MATRIXO 0,0,0
 CAL w1 = body_x2/2
 CAL w2 = body_y2/2
 CAL w3 = body_x1/2
 CAL w4 = body_y1/2
 ETUBE i,SetArcSep, w1,w2,0,body_z, w3,w4,0, 0,0,1,1,0

 // 腕(X+)
 CAL w1 = body_x1/2 + arm_sp + arm_sz/2
 CAL w2 = 0
 CAL w3 = body_z - arm_sz/2
 CAL w4 = arm_a12/180*PI
 CAL w5 = PI + arm_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = arm_sz/2
 CYLIND i,SetArcSep,w1,arm_l, 1,1,0

 // 腕(X-)
 CAL w1 =-body_x1/2 - arm_sp - arm_sz/2
 CAL w2 = 0
 CAL w3 = body_z - arm_sz/2
 CAL w4 =-arm_a22/180*PI
 CAL w5 = PI + arm_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = arm_sz/2
 CYLIND i,SetArcSep,w1,arm_l, 1,1,0

上記をScript!3Dで実行すると下図のようになります。
(色を灰色(9)にしてみました)
20101103h

[Script!3D] 模擬的な人物?3Dモデル(2-3)

取りあえず、人物?らしき3Dモデル・その2-3。
頭と胴体に手をつけたパターン。
// 模擬的な人物モデル(03a)
//  頭(球)+胴体(四角錐)+腕(直方体)

#VAR
 col = 3    ;*線色
 head = 30   ;*頭の大きさ
 body_x1 = 40  ;*体 上X
 body_y1 = 20  ;*体 上Y
 body_x2 = 10  ;*体 下X
 body_y2 = 5  ;*体 下Y
 body_z = 130  ;*体Z
 arm_sp = 0  ;*腕 離す間隔
 arm_sz = 10  ;*腕 太さ
 arm_l = 60   ;*腕 長さ
 arm_a11 = 0  ;*腕(+)角度1
 arm_a12 = 0  ;*腕(+)角度2
 arm_a21 = 0  ;*腕(-)角度1
 arm_a22 = 0  ;*腕(-)角度2
 i
 w1
 w2
 w3
 w4
 w5
#DRAW
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 MATRIXO 0,0,0
 CUBIC4 i,body_x2,body_y2, body_z, body_x1,body_y1, 0,0, 1,1,0

 // 腕(X+)
 CAL w1 = body_x1/2 + arm_sp + arm_sz/2
 CAL w2 = 0
 CAL w3 = body_z - arm_sz/2
 CAL w4 = arm_a12/180*PI
 CAL w5 = PI + arm_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE i,arm_sz,arm_sz,arm_l, 1,1,0

 // 腕(X-)
 CAL w1 =-body_x1/2 - arm_sp - arm_sz/2
 CAL w2 = 0
 CAL w3 = body_z - arm_sz/2
 CAL w4 =-arm_a22/180*PI
 CAL w5 = PI + arm_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE i,arm_sz,arm_sz,arm_l, 1,1,0

上記をScript!3Dで実行すると下図のようになります。
(色を灰色(8)にしてみました)
20101103g

[Script!3D] 模擬的な人物?3Dモデル(2-2)

取りあえず、人物?らしき3Dモデル・その2-2。
頭と胴体に手をつけたパターン。
// 模擬的な人物モデル(02a)
//  頭(球)+胴体(楕円柱)+腕(円柱)

#VAR
 col = 3    ;*線色
 head = 30   ;*頭の大きさ
 body_x = 50  ;*体X
 body_y = 30  ;*体Y
 body_z = 130  ;*体Z
 arm_sp = 1  ;*腕 離す間隔
 arm_sz = 15  ;*腕 太さ
 arm_l = 60   ;*腕 長さ
 arm_a11 = 0  ;*腕(+)角度1
 arm_a12 = 0  ;*腕(+)角度2
 arm_a21 = 0  ;*腕(-)角度1
 arm_a22 = 0  ;*腕(-)角度2
 i
 w1
 w2
 w3
 w4
 w5
#DRAW
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 MATRIXO 0,0,0
 CAL w1 = body_x/2
 CAL w2 = body_y/2
 ECYLIND i,SetArcSep, w1,w2,0,body_z, 1,1,0

 // 腕(X+)
 CAL w1 = body_x/2 + arm_sp + arm_sz/2
 CAL w2 = 0
 CAL w3 = body_z - arm_sz/2
 CAL w4 = arm_a12/180*PI
 CAL w5 = PI + arm_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = arm_sz/2
 CYLIND i,SetArcSep,w1,arm_l, 1,1,0

 // 腕(X-)
 CAL w1 =-body_x/2 - arm_sp - arm_sz/2
 CAL w2 = 0
 CAL w3 = body_z - arm_sz/2
 CAL w4 =-arm_a22/180*PI
 CAL w5 = PI + arm_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CAL w1 = arm_sz/2
 CYLIND i,SetArcSep,w1,arm_l, 1,1,0

上記をScript!3Dで実行すると下図のようになります。
(色を青色(5)にしてみました)
20101103f

[Script!3D] 模擬的な人物?3Dモデル(2-1)

取りあえず、人物?らしき3Dモデル・その2-1。
頭と胴体に手をつけたパターン。
// 模擬的な人物モデル(01a)
//  頭(球)+胴体(直方体)+腕(直方体)

#VAR
 col = 3    ;*線色
 head = 30   ;*頭の大きさ
 body_x = 40  ;*体X
 body_y = 20  ;*体Y
 body_z = 130  ;*体Z
 arm_sp = 2  ;*腕 離す間隔
 arm_sz = 10  ;*腕 太さ
 arm_l = 60   ;*腕 長さ
 arm_a11 = 0  ;*腕(+)角度1
 arm_a12 = 0  ;*腕(+)角度2
 arm_a21 = 0  ;*腕(-)角度1
 arm_a22 = 0  ;*腕(-)角度2
 i
 w1
 w2
 w3
 w4
 w5
#DRAW
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 MATRIXO 0,0,0
 CUBE i,body_x,body_y,body_z, 1,1,0

 // 腕(X+)
 CAL w1 = body_x/2 + arm_sp + arm_sz/2
 CAL w2 = 0
 CAL w3 = body_z - arm_sz/2
 CAL w4 = arm_a12/180*PI
 CAL w5 = PI + arm_a11/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE i,arm_sz,arm_sz,arm_l, 1,1,0

 // 腕(X-)
 CAL w1 =-body_x/2 - arm_sp - arm_sz/2
 CAL w2 = 0
 CAL w3 = body_z - arm_sz/2
 CAL w4 =-arm_a22/180*PI
 CAL w5 = PI + arm_a21/180*PI
 MATRIXA w1,w2,w3,0,w4,w5
 CUBE i,arm_sz,arm_sz,arm_l, 1,1,0

上記をScript!3Dで実行すると下図のようになります。
(色を水色(4)にしてみました)
20101103e

[Script!3D] 模擬的な人物?3Dモデル(1-4)

取りあえず、人物?らしき3Dモデル・その1-4。
頭と胴体さえあればいいやパターン。
胴体を逆楕円錐にしたバージョン
// 模擬的な人物モデル(04)
//  頭(球)+胴体(楕円錐)

#VAR
 col = 3    ;*線色
 head = 30   ;*頭の大きさ
 body_x1 = 50  ;*体 上X
 body_y1 = 30  ;*体 上Y
 body_x2 = 10  ;*体 下X
 body_y2 = 5  ;*体 下Y
 body_z = 130  ;*体Z
 i
 w1
 w2
 w3
 w4
#DRAW
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 MATRIXO 0,0,0
 CAL w1 = body_x2/2
 CAL w2 = body_y2/2
 CAL w3 = body_x1/2
 CAL w4 = body_y1/2
 ETUBE i,SetArcSep, w1,w2,0,body_z, w3,w4,0, 0,0,1,1,0

上記をScript!3Dで実行すると下図のようになります。
20101103d

[Script!3D] 模擬的な人物?3Dモデル(1-3)

取りあえず、人物?らしき3Dモデル・その1-3。
頭と胴体さえあればいいやパターン。
胴体を逆四角錐にしたバージョン。
// 模擬的な人物モデル(03)
//  頭(球)+胴体(四角錐)

#VAR
 col = 3    ;*線色
 head = 30   ;*頭の大きさ
 body_x1 = 40  ;*体 上X
 body_y1 = 20  ;*体 上Y
 body_x2 = 10  ;*体 下X
 body_y2 = 5  ;*体 下Y
 body_z = 130  ;*体Z
 i
 w1
 w2
 w3
#DRAW
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 MATRIXO 0,0,0
 CUBIC4 i,body_x2,body_y2, body_z, body_x1,body_y1, 0,0, 1,1,0

上記をScript!3Dで実行すると下図のようになります。
20101103c

[Script!3D] 模擬的な人物?3Dモデル(1-2)

取りあえず、人物?らしき3Dモデル・その1-2。
頭と胴体さえあればいいやパターン。
胴体を楕円柱にしたバージョン
// 模擬的な人物モデル(02)
//  頭(球)+胴体(楕円柱)

#VAR
 col = 3    ;*線色
 head = 30   ;*頭の大きさ
 body_x = 50  ;*体X
 body_y = 30  ;*体Y
 body_z = 130  ;*体Z
 i
 w1
 w2
 w3
#DRAW
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 MATRIXO 0,0,0
 CAL w1 = body_x/2
 CAL w2 = body_y/2
 ECYLIND i,SetArcSep, w1,w2,0,body_z, 1,1,0

上記をScript!3Dで実行すると下図のようになります。
20101103b

[Script!3D] 模擬的な人物?3Dモデル(1-1)

取りあえず、人物?らしき3Dモデル・その1-1。
頭と胴体さえあればいいやパターン。
なんか、ゲームのコマみたいですけど。
// 模擬的な人物モデル(01)
//  頭(球)+胴体(直方体)

#VAR
 col = 3    ;*線色
 head = 30   ;*頭の大きさ
 body_x = 40  ;*体X
 body_y = 20  ;*体Y
 body_z = 130  ;*体Z
 i
 w1
 w2
 w3
#DRAW
 PEN col
 // 頭
 CAL w1 = 0
 CAL w2 = 0
 CAL w3 = body_z + head/2
 MATRIXO w1,w2,w3
 CAL w1 = head/2
 SPHERE i,SetArcSep,w1,0

 // 胴体
 MATRIXO 0,0,0
 CUBE i,body_x,body_y,body_z, 1,1,0

上記をScript!3Dで実行すると下図のようになります。
20101103a

[Script!3D] 球作図なら・・・

ちなみに「Script!3D」で球を作図するのであれば
// 球作図テスト00
#VAR
 r = 100   ;*半径
 sp = 24   ;*分割数
 col = 60   ;*線色
 n
#DRAW
 PEN col
 SPHERE n,sp,r,0
という感じ
実行すると
20100801d
で、スケッチアップに送って
20100801e
グループを分解/グループ編集でソフトニング
20100801f
みたいな感じ

[Script!3D] ちなみにScript!3Dでやるとしたら

以前に作った「渦巻き1.s3」を使用
// 渦巻き1
#VAR
 col = 3   ;*線色
 r = 100   ;*半径
 h = 500   ;*高さ
 sx = 10   ;*回転図形X
 sy = 10   ;*回転図形Y
 a = 5    ;*回転数
 d = 24    ;*分割数/1回転
 ba = 1    ;*最終倍率X
 i
 j
 w1
 w2
 w3
 w4
#DRAW
 // 回転図形を作図
 PEN col
 CAL w1 = r - sx/2
 CAL w2 = 0
 CAL w3 = r + sx/2
 CAL w4 = sy
 4SLD3D i,w3,0,w2, w1,0,w2, w1,0,w4, w3,0,w4

 // 回転体する図形を選択状態にします
 ALLSEL j, 999,999,999,999

 // 回転体します
 CAL w1 = d*a
 CAL w2 = a*2*PI
 S_ROT2 0,-1,-1,w1, 0,0,0, 0,0,0, 0,0,100, ba,1,1, h, w2,0
これで高さを「150」として最終倍率を「0.5」にした例
20100729h
20100729i
最終の四角のX長さが「0.5」倍になってますが〜
S_ROT2 0,-1,-1,w1, 0,0,0, 0,0,0, 0,0,100, ba,1,ba, h, w2,0
とすればZ長さも「0.5」倍になります。

R_SWEPS命令を使ってフォローミーのようなことをすれば、こちらでも四角はひねられた状態になりますね。まぁ、1区間線分を面に対する法線として押し出ししますから、その法線がひねられていくんだから当然、面もひねられていくから、そのまんま、といえば、そのまんまですけれど。だから姿勢を同じにするには、そのひねられた分だけ逆にひねり返すような処理が必要なのかも。

[Script!3D+GSU] 先のものをScript!3Dで描くと・・・

先のものを当方の「Script!3D」で途中まで書きます。
(交差は出来ませんので交差は別途スケッチアップで実行)
// 枝分かれした円柱
//
#VAR
 col = 8    ;*線色
 D1 = 3000   ;*主円柱直径
 D2 = 1500   ;*枝円柱直径
 L1 =12000   ;*主円柱高さ
 LE = 6000   ;*枝分かれ高さ
 LA = 45    ;*枝分かれ角度[°]
 L2 = 5000   ;*枝円柱長さ
 sp = 24    ;*分割数
 i   // 作業用
 w1  // 作業用
#DRAW
 PEN col
 CAL  w1 = D1/2
 CYLIND i,sp,w1,L1,1,1,0

 MATRIXO 0,0,LE
 CAL w1 = LA/180*PI
 ROYMATR w1
 CAL  w1 = D2/2
 CYLIND i,sp,w1,L2,1,1,0
これを実行します。
20100708j
スケッチアップに送信します。
20100708k
交差して、要らない線を消して、ソフトニングしたところ
20100708l
右側はX線表示

円の断面は、円の塗り潰しではなくて多角形の塗り潰し状態ですけど

テクスチャが張れない?

ヤギPさんの掲示板であったネタを CARRARA 4 PRO 日本語版でやろうとしていたんですが、とりあえず先日作ってた Script!3D で作った星型に対してテクスチャ云々、ということをしていたんだけれども、どうもうまくいかない。なんでだろう?なんでだろう?
ヘルプみても分からない。作業中は画面に見えないんだろうか?でもレンダリングしても反映されてないし。とか、いろいろやってて、、、

とりあえず、もう1度最初から。CARRARA を動かし、プリミティブの球を配置し、プリセットのシェーダーでチェックな奴を指定。レンダリングしたらOK,見えてる。そのテクスチャの代わりにムービーファイル(avi)を指定して、とりあえず静止状態では、見えてる。OK。で、アニメーション云々でそのムービーファイルの開始・終了・中間のトゥイーンを指定(画面上ではうまく行ったのかどうかが非常に分かりにくい)、レンダリングしてみたら、OKの様子。

さて、次に、新規の状態で 3D-DXFファイルをインポートする。先の星型のもの。3階層にグループ化されているので解除×2。プリセットのシェーダーで金属とかは大丈夫。しかーし、テクスチャのついてるチェックな奴を指定すると・・・げ、反映されない。何じゃこれは? これがそもそもの原因か。サイズの問題でもないみたいだし、表裏とかでもないし、普通のプリミティブと比較しても、一体何が悪いのかさっぱり分からない。 前からこんなんだっけ?おかしいなぁ。 一度、アップデートは当てたけれども、それが原因だったら嫌だなぁ。 OBJファイルも同じくダメ。 幸い、STLファイルは大丈夫らしい。 うーん、訳が分からない。

でも以前はDXFファイルをインポートしてチェックなシェーダーにしたり、してたはずなんだけどなぁ。多分。アップデートしたせいかなぁ?もう昔のバージョンだからこれ以上アップされないだろうし。参りました。基本的に DXFを扱う事が多いので、そういう制限があると困ってしまいます。

こんなことで何時間も悩んでました。
時間の、、、無駄ァ無駄ァ無駄ァアアア!!!
Recent Comments