papervision3dの最近のブログ記事

どうもpapervision3d関連のネタはリソースが少なく、需要があるっぽいので、
たまには人の役にたちそうなことを書くだけ書いておきます。

■material関連
Google SketchUpのcolladaを読み込むと
SketchUpの書き出しが下手なのか、
Colladaクラス内のパース処理がうまくいっていないのかわからないけれど
materialが反映されないかった。
なので以下のように手動でmaterial(今回はColorMaterial)を割り当てた。

var colladaObj:Collada; //すでに読み込み済みのColladaオブジェクト
var material:ColorMaterial = new ColorMaterial(myColor); //myColorは任意の色
var myMaterials:MaterialsList = new MaterialsList();
for each(var child in colladaObj.children){
for each(var grandchild in child.children){
for ( var materialName in grandchild.materials.materialsByName){
myMaterials.addMaterial(material, materialName);
}
grandchild.materials = myMaterials;
}
}

■z-sort関連
Google SketchUpのcolladaを読み込むとz-sortがメチャメチャになった。
DisplayObject3Dクラスのproject()関数内をtraceしてみると
"Camera"という名前のオブジェクトが返す値(おそらくscreenZの値)がNaNになってしまっている。
この"Camera"はいったい何に使われるのかよくわからないが、
なくなっても大丈夫っぽかったので、削除した。

for (var childName in colladaObj.children){
if(childName=="Camera"){
colladaObj.removeChild(colladaObj.getChildByName(childName));
}
}

まだ制作途中なので、以上のことで何か不具合おこったら追記します。

Flashのメモ。
Papervisionにはcollada形式の3Dデータが読め込めます。

僕は3DソフトはGoogle SketchUp(無料版)を使ってみています。
ほとんど面みたいな感じのモデリングしかしないので。

作業フローとしては以下のような感じ。

illustratorでデザイン作成

AutoCAD形式でデータ書き出し

Google SketchUpにimport

Google SketchUp内で面や立体を作成
(importしただけでは面にならないので、ペンツールで面を少しだけなぞる必要あります)

Google Earth 4形式(kmz)でデータ書き出し

kmzファイルを解凍(kmzはzip形式です)すると、modelsというフォルダの中に
daeファイル(colladaのファイル)が入っている。
(SketchUpが書き出したdaeファイルは、不要なxmlノードを含む場合があるので
それを手動で消す必要がある。詳しくはpv3dのMLに同様の投稿あります。)

papervisionで読み込み

ひさしぶりの更新で、技術的な話なんですが
最近、会社でPapervision3D触ってます。
ActionScript3にも、遅まきながらデビューしつつ。
今日、CS3の日本語版が会社に届いたし。

今ハマっているのはPapervision3Dのワールド座標系から
2Dスクリーン座標系への変換処理。
普通に考えると
3Dワールド座標×カメラビュー行列×プロジェクション行列
(その後にビューポート変換?)
だけど、Papervisionでこういう行列をどうやって取得するか今イチわからんし
分かったとしても計算重そうやし。
それで今日、DisplayObject3DのcontainerをgetBoundsして矩形を取得するという方法を
思いついたのでそれでやってるのだけど、これってダサイのかなぁ。
誰か良い方法知ってたら教えてくだせ・・

このアーカイブについて

このページには、過去に書かれたブログ記事のうちpapervision3dカテゴリに属しているものが含まれています。

前のカテゴリはgizagizaです。

次のカテゴリはshakkiriです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。