Re: コントロールポイントの座標について ( No.4 ) |
- 日時: 2005/06/07 23:43
- 名前: 管理人
- >正直いうとスクリプトでは、ワールド座標値を得ることは不可能と思います。
最新のShadeを持ってないので、あまり自信を持って言えないのですが、 少なくともShade6ではグローバル座標値が得られています。
スクリプトで得られる座標値はむしろグローバルの方が多いのではないでしょうか。 一部のプロパティ(sphere_object_centerやdisk_object_centerなど)では、 なぜかローカル座標値を返すものもあるようです。 ↓関連スレッド http://www2u.biglobe.ne.jp/~k_hiray/ps_db/bbs2/patio.cgi?mode=view&no=41
スキン設定されているポイントをジョイントで動かした場合でも、 普通にanchor_pointでグローバル座標値が得られるようです。
|
Re: コントロールポイントの座標について ( No.5 ) |
- 日時: 2005/06/08 00:26
- 名前: まさ
- >スクリプトで得られる座標値はむしろグローバルの方が多いのではないでしょうか。
そうですか。ちょっと安易に書いてしまったようです。 スクリプトから遠ざかってしまったもので、思い込みをしてたかもしれません。 実は、大分前に最初tclでスクリプトを書いてましたが、shade5?6?あたりから Python スクリプトが 提供されるようになって、tclに比べはるかに記述がし易くなったので Python に切り替えてしまいました。 そこで、リファレンスには、座標値は「全てローカルです」と記述があったので思い込んでしまったようです。 しかし、python のメソッドおよびアトリビュートの仕様が shade7からまったく違ったものになったため 全てのスクリプトが動作不良になってしまったのでスクリプトからは遠ざかってしまいました。 (↑これは、愚痴) ただ、気になるのは、それ以外のスクリプトはあまり仕様が変わらず、あまりメンテナンスされてない ようなので、スキンの重みが0.5などの1.0でない場合果たして正しいワールド値を返しているのか とても気になるのです。本来なら確認すべきところですが、最新のリファレンスが提供されてないので 今は手を付けてません。
|
Re: コントロールポイントの座標について ( No.6 ) |
- 日時: 2005/06/08 12:29
- 名前: 管理人
- >全てのスクリプトが動作不良になってしまったのでスクリプトからは遠ざかってしまいました。
え、そうなんですか。 Shadeほど使えるスクリプトの種類が多い3DCGソフトはないと思うし、 そうしたスクリプトで作業が便利にできるというのがShadeの大きな魅力のひとつだと思っているのですが、 動作不良じゃ困りますね。リファレンスも公開されてないのですか。
>ただ、気になるのは、それ以外のスクリプトはあまり仕様が変わらず、
新しい機能が追加されるというのは大歓迎なのですが、同じ名前のコマンドやプロパティが 別の動作をしたり、違う値を返すようになると、けっこう大変だったりします。 Shade6でのUTF-8にからむ文字コードの問題も大きかったですね。
>スキンの重みが0.5などの1.0でない場合果たして正しいワールド値を返しているのかとても気になるのです。
気になるようでしたら、以下のようなスクリプトで確認してみてはいかがでしょう。 スキン設定されている線形状を選んだ状態で実行し、取得した座標値のリストから 新たに線形状を描きます。線形状が同じところにできたら、 正しいというか、見た目通りの座標値を返しているといえると思います。Tclです。 Shade6ではウェイトが1.0でない場合も、見た目通りの座標値を返しているようです。
set co_list {} for {set i 0} {$i < $number_of_anchor_points} {incr i} { lappend co_list [list [anchor_point $i] [inhandle $i] [outhandle $i]] } select_all start_polygon closed 1 foreach co $co_list { append_point at [lindex $co 0] in_absolute [lindex $co 1] out_absolute [lindex $co 2] } finish_polygon
|
Re: コントロールポイントの座標について ( No.7 ) |
- 日時: 2005/06/08 13:12
- 名前: はる
- 平山さん、Junさん、まささん、ありがとうございます。
私が、コントロールポイントの座標値を必要としている理由は、 MAVS7.0でshadeで作成した物体を表現したいからです。
MAVS7.0ファイルの書式が
4 //要素数 x1、y1、z1 x2、y2、z2 x3、y3、z3 x4、y4、z4 4 … …
であり、四角形のパネルで表現することを目的としています。 ですので、平山さんに教えて頂いたスクリプトのようにファイルに書き出しを行いたいのです。
そこで、質問なのですが、
>set file_ID [open "${file_name}.txt" w] >puts $file_ID $co >close $file_ID
の行に入ると、
"Tclをインストールしてください。" という警告が出てきます。
tcl84.dll があることは確認しているのですが、これは、何が原因なのでしょうか。 私は7.5を使用しているのですが、verによるものなのでしょうか。
|
Re: コントロールポイントの座標について ( No.8 ) |
- 日時: 2005/06/08 13:50
- 名前: Jun
- はる様。
Macをお使いでしたら、ファイルアクセスはAppleScriptがベストです。
set fileNum to open for access file "ファイルパス" with write permission write "記入したい文字をかく" to fileNum close access fileNum
Windowsでは、Basic言語でファイルの書き出しができたと思うのですが、具体的にはよく分かりません。
>MAVS7.0ファイル これは、OpenGL関係でしょうか。 もしそうであれば、変数にリストで値を入れて、こんな事をされてはいかがですか。(Objective-Cです。)
glFrontFace(GL_CW); GLdouble a1[] = {x1,y1,z1}; GLdouble a2[] = {x2,y2,z2}; GLdouble a3[] = {x3,y3,z3}; GLdouble a4[] = {x4,y4,z4}; glBegin(GL_QUADS); glVertex3dv(a1); glVertex3dv(a2); glVertex3dv(a3); glVertex3dv(a4); glEnd();
私はOpenGLはあまりよく分からないのですが、少なくとも上のコードでOpenGLViewに描画を行ったら、四角形は見えると思います。
|
Re: コントロールポイントの座標について ( No.9 ) |
- 日時: 2005/06/08 19:19
- 名前: 管理人
- >"Tclをインストールしてください。" という警告が出てきます。
え、そうなんですか。該当行は新たにファイルを作って座標値を書き込むということを やってるんですが、7.5では使えないんですか。tcl84.dllでやっていると思ってましたが・・・。
うーん、それじゃVBScriptでやってみてください。(Windowsなら) VBScriptでもファイル書き出しができないということはまず無いと思います。 VBScriptほとんど忘れてますが・・・
nap = XShade.NumberOfAnchorPoints ReDim cap(nap-1, 2) For i = 0 To nap-1 For j = 0 To 2 cap(i, j) = XShade.AnchorPoint(i, j) Next Next
Set v_FS = CreateObject("Scripting.FileSystemObject") Set fld_s = v_FS.CreateTextFile("write_ap_co.txt", True) fld_s.WriteLine(nap & " //要素数") For i = 0 To nap-1 fld_s.WriteLine(cap(i, 0) & "," & cap(i, 1) & "," & cap(i, 2)) Next fld_s.WriteLine(nap) fld_s.Close
ところで 7.5ってメッセージウインドウに表示された文字がコピーできるようになったんでしたっけ。
|
Re: コントロールポイントの座標について ( No.10 ) |
- 日時: 2005/06/09 15:51
- 名前: はる
- Junさん、平山さんありがとうございます。
お伝え遅れましたが、私はwindows xp で、shade7.5 を使用しております。
> 7.5ってメッセージウインドウに表示された文字がコピーできるようになったんでしたっけ。 7.5では、ショートカットコマンドを使用して、コピー&ペーストができます。
>うーん、それじゃVBScriptでやってみてください。(Windowsなら) >VBScriptでもファイル書き出しができないということはまず無いと思います。 ファイルに出力ができるようになりました!ありがとうございます。 さまざまな MAVS 書式を書けるように、まだまだ、勉強しなきゃなと思っております。
初歩的な質問で申し訳ないのですが、VBScript for shade のリファレンスは、どこかからダウンロードできるものなのでしょうか。 基本構文などはVBscriptのユーザーズガイド(msdn)で勉強しようと思っているのですが、 shade用の関数のリファレンスはあるのでしょうか。
|
Re: コントロールポイントの座標について ( No.11 ) |
- 日時: 2005/06/09 16:35
- 名前: Jun
- はる様
VBScriptはWindows scriptの一種ですよね? では、Shade 6用ですが、ここからダウンロードできそうです。 http://shade.e-frontier.co.jp/download/dev_6script20.html
私には分かりかねますが、Shade 6と7.5のスクリプトは大して変わっていないのではないか、と思います。 デバッグ機能があるエディタを使用されているなら、少しコマンドが違っていたら警告してくれるので、6のマニュアルで7.5用を作るのは結構簡単だと思います。
|
Re: コントロールポイントの座標について ( No.12 ) |
- 日時: 2005/06/09 18:20
- 名前: はる
- Junさん、ありがとうございます。
以前にも、ご提示いただいていたのですが、それが自分の求めているリファレンスだということを認識できていませんでした。お恥ずかしいばかりです。
これからしっかり勉強していきたいと思います。ありがとうございました。
|
Re: コントロールポイントの座標について ( No.13 ) |
- 日時: 2005/06/09 19:03
- 名前: Jun
- はる様
説明が手に入ってよかったですね。 Visual StudioというWindowsのソフトを使えば、VBScriptにGUIを付けられるそうなので、結構拡張性があると思います。 ただ、速度的な面では完璧な開発環境とは言えないので、いろいろと細工をしてスピードアップをしないと処理時間がえらく長くなってしまう事もありますので注意が必要です。
スクリプトでも、様々な方法でスピードアップが出来ますので、それを書いておくので参考になさってください。 1,形状作成や、選択の変更などを行う場合は、そのコマンドの塊をinhibit updateとallow updateで囲む。 2,要らなくなった変数は、まとめて消去する。 3,Windowsではどうか分かりませんが、Macでは沢山あるイベントを1つのイベントとして送る。 4,特に理由が無い限り、リアルタイムは追求しない。 などなど...
|