Director Shockwave Studio Developer's Guide
前半4分の1はImage Lingoについて。後半はShockwave3D。
サンプルソースの題材が他の本と少し異なっていて面白いといえば面白いが、ちょっととっつきにくい。
ファイルを見ながらでないと内容が理解しづらいのと、そのソース自体がやや複雑でわかりづらい。
ベクターシェイプを描いて立体にするサンプルは良いと思った。
3Dの最近のブログ記事
The Shockwave Exporter Fixer
3ds MaxやPlasmaからw3d書き出しする際のいくつかの不具合を解消するMaxScript。
ブラウザのShockwave上でレンダラを「コンテンツの設定に従う」以外に設定していると、プロジェクタで任意のレンダラに変更できなくなる問題。
かなり以前からの問題だけど、解決というか回避策に気付いた。
Shockwave 3D Asset Xtraをプロジェクタに内包している場合のみに起こる問題でした。
外部にXtraを置けば問題なく変更できるようになった。
3/26追記:
解決したと思ったらどうもそうではなく、MX2004付属の最新Shockwave 3D Asset Xtraだと外部に置いてもレンダラ切り替えが出来ない。8.5のを使えということか。
もしくはレジストリいじるか。
http://www.macromedia.com/cfusion/webforums/forum/messageview.cfm?catid=268&threadid=865845
現状のexporterに改善して欲しい点。
・モデルをクローンしてもモデルリソースが共有されずデータサイズが肥大する。
・モーションを書き出すと、全モデルにkeyframePlayerがついてしまう。
(不要なkeyframePlayerはremoveModifierすると相当パフォーマンスがアップする)
・シーン上でモデルを拡大縮小すると位置が狂う。
・親子関係があるときの挙動が怪しい。
などなど結構あるけど、アップデートされる気配がないので
自前で作ろうとしている人がいる。
ある程度できたC++のソースを公開してくれた人もいるので、誰か引継いで改良してくれないかなぁ。
参照:
http://nuttybar.drama.uga.edu/pipermail/dir3d-l/2005-March/thread.html#8310
http://www.niklever.net/files/LW2W3D.zip
phosphor_alpha_4_248
こんなのがブラウザ上で動くんだから凄い。
Shockwave3D万歳。
3/13追記:
公開終了したようで。次期バージョン公開を待ちましょう。
toxi.co.uk :: the hub
ヴィジュアルクオリティ的にも技術面でもクールです。
音と同期したエフェクトは見てて飽きないなぁ。
フレームレートをあげるために試行錯誤中です。
透過マップや反射マップは、低スペックマシンではけっこう負荷がかかる。
見落としがちなのがカメラの画角。
画角を大きくすると当然視界に入るオブジェクトが増えるのでフレームレートに影響します。
あとはやっぱり、modelsUnderRayとその対象となるポリゴン数だなぁ。
レンダラーをOpenGLにしてから、下記のようにする。
member("3D").debugflags=16384
member("3D").model("Model").bonesPlayer.play("pragma setbool(14,1)")
"pragma setbool(14,1)"の部分は、
setbool(index,value)、setinteger(index,value)、setfloat(index,value)の
3種類あって値を変えるとボーンに関する操作がいろいろできるみたい。
コマンド一覧等、詳しい事はこちら
Advanced Bones in Director 8.5
3dmember.texture("texture").quality=#lowfiltered
ミップマップは使わずにバイリニアフィルターがかかる設定。#highより綺麗。
サンプル画像
ただ、最近のビデオカードはミップマップを使う設定に最適化されているので
#lowや#lowfilteredは、#mediumや#highに比べパフォーマンスが悪いらしい。
■.w3d書き出し時の注意点
・ボーンアニメーションする時は、オブジェクトとボーンをグループ化しておく
・キーフレームアニメーションさせたオブジェクトをグループ化してはいけない
■ユーザー定義プロパティの書式
モデルを右クリック>プロパティ>ユーザー定義タブに下記の書式で書く
myProp1=abc;
myProp2=def;
※イコールの横にスペースを入れてはいけない
※値はダブルクォーテーションで囲まない
※行末にセミコロンを必ずつける
Lingoからアクセスする時は
SW3DMember.model[i].userData[1][#myProp1]で"abc"が返ってくる