transform Ver 0.01 for MS-Windows XP〜Windows10 32/64ビット用 シェアウェア
VRML のファイルを読み込んで、point の値を変更し、移動、回転、サイズ変更を行い、別ファイルに書き込んで、変換するプログラムです
最近、バーチャルリアリティ VR や拡張現実 AR への感心が高まってきている。
しかし、初心者にはしいいが高いのでは中と思われがちだが、実はそうではない。
特に VRML(バーチャルリアリティモデリングランゲージ)に関しては、誰でも気軽に試してみることが出来るものだ。
というのは、原則テキストで記述できるので、極端な話し Windows についてくるメモ帳で書いて、お試しできるからだ。実用的には、プログラミングの時に使う、自分が使い慣れたエディタなどの文章編集プログラムを使うと良いだろう。
VRML の歴史は古い。今の仕様が提唱されたのは1996年ごろなので、優に20年以上の歴史がある。
1996年のパソコンでも実現できるバーチャルリアリティということなので、現在存在するパソコンなら、どのパソコンでも快適に体験できる。パソコンの性能は、そうとう良くなっているからね。
歴史があるということは、それだけ世界中に普及しているし、ノウハウや資産が沢山あると言うことを意味しています。
おそらく、最も世界で普及しているバーチャルリアリティは VRML だろう。
それが証拠に、最近3Dプリンターの利用も注目されているが、フルカラーの3Dプリンターに対応しているのは VRML と obj 形式だけだ。このうち、obj は単なる3次元モデルを表現する規格であり、バーチャルリアリティではない。
つまり、フルカラーの3Dプリンターに対応しようと思えば、VRML は必要不可欠な存在だ。
3次元のモデル表現には他にも stl という規格もあるが、この規格には色を表現する部分が無い。純粋に3次元モデルの形のみの規格だ。要する色情報が無いので、低価格の3Dプリンターにも利用されている。
勿論、フルカラーの3Dプリンターでも使えるだろうが、使っても淡色になるのでフルカラーの機能を利用する事は出来ない。
obj は、形情報だけではなく、色情報も持っているので、フルカラーの3Dプリンターには使える。
VRML は、形と色情報のほかにも、バーチャルリアリティー情報を持つことが出来る点が obj とは違う。
バーチャルリアリティ情報のうちの形と色情報のみを使えばフルカラーの3Dプリンターに使える事になる。
したがって単にフルカラーの3Dプリンターを使いたいだけなら obj で十分だが、せっかく3次元のモデルを作っておいて、単にそのままではもったいない話だ。
世界中に普及している VRML に対応しておけば、バーチャルリアリティなど様々な利用が可能なのだ。
しかも、多くの VRML 資産を気軽にフルカラーの3Dプリンターで利用することが出来る。
ただ、この場合、3Dプリンターに出力しやすいように、物体の位置を変える必要が出てくる場合がある。普通、VRML の中であれば、ファイルに書かれている値は変更せず、バーチャルリアリティの中で Transform ノードを使って物体の移動を行う。しかし3Dプリンターは現実世
界のものなので、前もって変換してあげる必要がある。
そこで、VRML ファイルの中の point の値を、実際に変換し、別ファイルに書きこむプログラムを作った。
変換する際には、VRML の Transform ノードと似たようでありながら、さらに簡単に出来るようにした。
たとえでフルカラーの3Dプリンターの利用をあげたが、それ以外にも、VRML ファイルの point の位置を変えたいという事はあるものだ。そういう時に、使えばよいだろう。
point とは、VRML のボリゴンなどの記述に使われている点の値の集合のこと。
VRML の以下のノードで主に使われている。
IndexedFaceSet
IndexedLineSet
PointSet
他の3D編集ソフトで変更したらよいのではないかと思う人がいるかもしれませんが、これにはいくつかの問題があります。
(1)一般の3Dモデリング・編集ソストは、使い方が難しい。
これはそのソフトが難しいと言うより、あまりに自由に3次元を操れるがゆえに、かえってどこがどうなったのか、把握にしくくなるという皮肉なことがあるかだら。
例えば、回転も自由に行えるため、x軸にもy軸にもz軸にも自由に回転できてしまうために、繰り返しているうちに、どこに何度回転しているか分からなくなることが起こるのだ。
そこで、本プログラムでは、一度に回転できるのは、xyzのどれか一つの軸に対してのみ回転できるようにした。こうすることで、変更が把握しやすい。
基本的には、VRML の Transform ノードと似た仕様になっているので、VRML になれた人には分かりやすい。
つまり、本プログラムを使うことによって変更が分かりやすく、使いやすい。
(2)一般の3Dモデリング・編集ソストを使って変更した場合、バーチャルリアリティ情報が失われる可能性が高い。
一般の3Dモデリング・編集ソストを使って変更した場合、確かに3Dの形は変更されるが、逆に言うと、それ以外に情報が失われる場合が多い。
先にも説明したが、VRMLは単なるモデリングを記述する規格ではない。動きなどの様々なバーチャルリアリティ情報が記述されている場合が多い。
しかし、一般のモデリングソフトが扱えるのは形状の情報のみで、それ以外の情報を扱うことが出来ないので、それらの情報は失われることが多い。
これではせっかくのバーチャルリアリティ情報が失われてしまう事になる。
その点、本プログラムを使った場合は、他の情報は保持されているので、バーチャルリアリティに再利用可能だ。修正するにしても、最初から書くよりは、容易になる。
興味のある人は、試しに使ってみて欲しい。
< 今回提供するプログラムとファイル >
1,transform.exe : VRMLファイルの point の値を書き替えて移動・回転・拡大を行うプログラム。32ビットのシステムでも64ビットのシステムでも動作する。
2,transform64.exe : 64 ビット版。VRMLファイルの point の値を書き替えて移動・回転・拡大を行うプログラム。64ビット以上のシステムで動作。
3,readme.txt, readme.htm : プログラムの説明ファイル(本ファイル)
001 -007: 説明参考画像
4、sample.wrl
MS-Windows XP〜Windows10 32/64ビットプログラムが動作するコンピュータ上で動作します。
A. 名 称: transform.exe Ver 0.01 for MS-Windows XP〜Windows10 32/64ビット < シェアウェア >
B. 著 者: 山口 浩明 Internet: M6284FV884Q@asahi-net.or.jp
C. 条 件:
1) MS-Windows XP から Windows10 のシステムで 32/64ビットプログラムが動作するすべてのコンピュータ。
D. 大きさ: 約 505000 バイト
E. 価 格: 1200円
F. 送金先: 郵便振替 口座番号 00320-1-39377 受取人名称 メディア・プロジェクト
G. 機能概要:
VRML のファイルを読み込んで、 point の値に移動や回転、サイズなどの変更を行うプログラムです。
コンソールプログラムなので、軽快。
MS-Windows XP〜Windows10 以上 32/64ビット以上が動作しているコンピューター上で動作します。
H. 復元方法: 一般的な zip ファイルの解凍法に準じます。
〈例1〉Windows10, Windows8.1 の場合、エクスプローラで transform.zip を選択後、上部のメニューより、
圧縮フォルダツール -> 展開 -> すべて展開
を選択・実行します。
〈例2〉XP の場合、マイコンピュータなどから transform.zip ファイル選択後、クイック解凍を選択実行。
なお、すべて展開する場合は、ライセンスキーが必要です。
ライセンスキーは、ベクターの「シェアレジ」コーナーで購入できます。
I. 再配布条件:営利を目的としない限り自由です。ただし、プログラムにいかなる変更も加えてはいけません。
< 使用前の準備 >
自分の環境に合わせて、好きなドライブのDIRECTORYに transform.zipを解凍コピーする。
〈解凍〉一般的なファイルの解凍法に準じます。
(Windows10 の場合)
Explore で transform.zip ファイルを選択。ウインドウ上部のメニューより
圧縮フォルダーツール -> 展開 -> すべて展開
を選択、実行する。
パスワードの入力が要求されたら、ここでライセンスキーを入力します。
(Windows XPの場合)
Explore などのファイル・マネージャーを使用して、ファイルを選択して、クイック解凍を選択実行。
パスワードの入力が要求されたら、ここでライセンスキーを入力します。
すべて展開する場合は、ライセンスキーが必要です。
ライセンスキーは、ベクターの「シェアレジ」コーナーで購入できます。
< 使用方法 >
1). データの準備
このプログラムは、VRML のテキストコードに対して実行します。バイナリや圧縮してあると使えませんので、あらかじめテキストファイルに変換しておいてください。
現在のバージョンではバイナリコードには対応していません。
2) 「名前を指定して実行する」
コンソールプログラムなので、基本的にはコマンドプロンプトから使います。
コマンドプロンプトを開いてから、CD コマンドなどで transform.exe が解凍されているディレクトリィに移動して、コマンドラインに transform と変換したい VRML ファイル名を入力します。
例えば、sample.wrl という名前の VRML ファイルを変換したい場合は、
transform sample.wrl
と入力して行きます。
入力が終わりましたら、最後に[Enter]キーを押します。
今の場合、ファイル名を指定しただけですので何も変換されませんが、t0.wrl というファイルが作られています。
VRML の Box はpointを使用していないので変換対象外なので、基準として青い Box を入れてある。移動や変化の目安のため。普通の3次元モデルのポリゴンはpointを使用しているので変換対象になる。
結果は、すべて t0.wrl という名前のファイルに書き込まれます。同じ名前のファイルが存在すれば上書きされますので、結果を保存しておきたい場合は、ファイル名を変更しておきましょう。
次に VRML ファイルの point の値を変更する場合は、ファイル名に続けて、変換したい値を指定します。
指定できるのは、移動、回転、スケール(拡大・縮小)です。
=== 回転 ===
回転の指定は rx: ry: rz: に続けて移動したい値を入力して指定します。
なお、角度はラジアンで指定します。VRML では角度をラジアンで指定しますので、それに準じています。
例えば、x軸に対して 180 回転したい場合は、
transform sample.wrl rx:3.1415
とタイプします。180度は 3.1415 ラジアンです。
y軸方向に 90 度回転したい場合は、
transform sample.wrl ry:1.57
とタイプします。90度は 1.57 ラジアンです。
z軸方向に 45 度回転したい場合は、
transform sample.wrl rz:0.78
とタイプします。45度は 0.78 ラジアンです。
同時に複数の回転( x軸 y軸 z軸)を指定できません。
複数の回転を行いたい場合は、一度変換し、そのファイルを変換するようにしましょう。
そもそもバーチャルリアリティ空間では、変に回転すると、自分の位置が分からなくなることがよくありますので、あえて1度に実行できる回転軸は x y z 軸のどれか一つに限定しています。
コマンドの最初の文字が r なのは、VRML の Transform ノードで回転を指定するときには、
rotation x y z deg(rag)
と指定することに習っています。
つまり rx:1 は VRML の Transform ノードでは
rotation 1 0 0 1
と指定しているのと同じことです。r は rotation の頭文字です。
=== 移動 ===
移動の指定は tx: ty: tz: に続けて移動したい値を入力して指定します。
例えば、x軸方向に 10 移動したい場合は、
transform sample.wrl tx:10
とタイプします。同時に y軸方向に 10、 z軸方向に -30 移動したい場合は、
transform sample.wrl tx:10 ty:-0.5 tz:-30
とタイプします。複数の移動を一度に指定できます。
コマンドの最初の文字が t なのは、VRML の Transform ノードで移動を指定するときには、
translation x y z
と指定することに習っています。
つまり tx:1 は VRML の Transform ノードでは
translation 1 0 0
と指定しているのと同じことです。t は translation の頭文字です。
=== 拡大・縮小 ===
全体を拡大・縮小したい場合は sc: に続けて拡大したい値を入力して指定します。
例えば、全方向に 3 倍したい場合は、
transform sample.wrl sc:3
特定の方向軸に拡大の指定は sx: sy: sz: に続けて拡大したい値を入力して指定します。
例えば、x軸方向に 2 倍したい場合は、
transform sample.wrl sx:2
とタイプします。複数のスケールを一度に指定できます。
同時に y軸方向に半分に縮小 0.5 倍したい場合は、
transform sample.wrl sx:2 sy:0.5
とタイプします。
コマンドの最初の文字が s なのは、VRML の Transform ノードで拡大・縮小を指定するときには、
scale x y z
と指定することに習っています。
つまり sx:2 は VRML の Transform ノードでは
scale 2 1 1
と指定しているのと同じことです。s は scale の頭文字です。
このように VRML の Transform ノードの使い方に似ているので、VRML になじみのある人には、使いやすいものになっています。
文字入力、タイピングの際には、ファイル名やコマンド、数値値の入力を間違えない様に、気をつけて下さい。
3)変換に関する一般的な注意事項
(回転の中心)
このプログラムでは原点を中心に回転しますので、ある点を中心に回転したい場合は、
1、ある点が原点になるように移動する。
2、回転する。
3、元の位置に移動する。(1を元へ戻す。つまり回転後1の逆に移動する)
(変換に順番に注意)
回転してから移動するのと、移動してから回転するのでは、違う場所になります。
一般に変換の順番を間違えると違う結果になりますのでご注意ください。
そもそもバーチャルリアリティ空間では、変に回転すると、自分の位置が分からなくなることがよくあります。
4),結果の表示
プログラムを実行すると、コンソール画面に結果が表示されます。
新規に
そのファイルが変換されたVRMLファイルです。
今回公開するプログラムは、VRML の Transform ノードのすべての機能を利用することは出来ません。
簡単な移動・回転・拡大縮小のみです。
VRML に興味が出た方は、各自プラグインなどを入手し、インストールして使用してみてください。
ただし、このプログラムの示す結果は、一つの判断基準であり、絶対的なものではありません。参考資料としてお使いください。
* あくまでも、それぞれの取扱いは各個人の責任において行ってください。
郵便振替 口座番号 00320-1-39377、 受取人名称 メディア・プロジェクト
正規ユーザーに登録されると、今後 メディア・プロジェクト が企画する催しやサービスを優待的に受ける機会が得られます。また、バージョンアップ情報やバージョンアップサービスも優先的に受けられます。
このプログラムの著作権は、山口 浩明 氏、および メディア・プロジェクト に帰属します。
COPY RIGHT.(C) Media Project, KISARAZU CITY TYUOU JAPAN
Hiroaki Yamaguchi
尚、このプログラムを使用した結果起こる、いかなる結果についても、作者及び メディア・プロジェクト は一切の責任を負いません。
〒292-0067 木更津市中央 メディア・プロジェクト
Internet: M6284FV884Q@asahi-net.or.jp
< transform.exe 情報 >
Ver 0.01 2016/11/10 公開
last update Mon Nov 07 09:32:13 2016