« max | メイン | tutorial »

wonderfl | Pixel3Dで万華鏡

Pixel3D万華鏡 - wonderfl build flash online

最近マイブームのPixel3DとParticleで遊んできましたが
そろそろ飽きてきたので他のこともやってみたいですね。

それにしても、wonderflを使うとスクリプトメインな私にとっては
Flashのサンプル+ソースをupする手間も省けて一石二鳥!?

効率アップで更新頻度もあがって本当にwonderflさまさまです。

wonderfl | Pixel3Dとか

またwonderflに2点投稿してみました。

PV3D | 3面回転スクリーン(鏡面付き) - wonderfl build flash online

これは以前ここでも紹介したものの復習。

Pixel3D【練習】 - wonderfl build flash online

sakeさんの投稿を見て触発されて、Pixel3Dの練習
クリックするとランダム配置になります。

PV3D | Planeのgeometryを使って正三角に配置

ページの切り替え時にアニメーションでMovieClipがぐるっとまわって次のページにいく

なんてものをPV3Dで作ろうと思ってたらこんな方法がありました。

まず各ページをMovieMaterialにしてあげて、それをPlaneのマテリアルに設定

それを次のようにすると、Plane自体の中心点をずらすことができます。

for each(hoge in myPlane.geometry.vertices){
hoge.z-=173;
}


今回設定したMovieClipの横幅が全部600で、ページが3枚なので

Planeを以下の式で求めた値だけ中心からzをずらして、120度ずつ回転させて配置すると

きれいに正三角形になります。

式※ (600 / 2) / √3 = 173.20.…


あとはそれをDisplayObject3DにaddChildしてあげて

マウスクリックでDisplayObject3DのrotationYを120度回転させるアニメーションを付ければできあがり!

サンプル

INSITE-WEB3D by PV3D-006

画像サイズを640×480に設定します。
レンダリングボタンを押します。
そうすると以下のようなエラーが出ますがOK押せばレンダリングが始まります。

wakaz026.jpg

レンダリング画像です。

wakaz027.jpg

こんな感じで15分くらいレンダリングして画像を保存します。ちょっとノイズ残りますが。。
それぞれのパーツをレンダリングするので時間かかるな〜

次はレンダリング画像をテクスチャーに編集します。

yellowBird camera

CornFlex

wakaz036.jpg

以前こんな360度カメラがありました。おそらくgoogleのストリートビューで使用されたものなのかな。
そして、、


wakaz035.jpg

それがこんなコンパクトになって新登場。値段も安そうですね。
googleのストリートビューだと静止画ですが、動画になるとなんか不気味!
おそらくPV3Dで法線を内側に向けた球体をつくり、
動画をASE Formatテクスチャーとして張る的な感じなのかな〜

なぜかレイブで撮影してるのが海外っぽくて面白いです(笑
動画

360度カメラの会社
yellowBird camera

これで見切れて気になるあの娘とかちゃんと見れるようになりますね(笑

INSITE-WEB3D by PV3D-005

FRYRENDERのレンダリング設定です。
HDRIを使用してレンダリングしていきます。
シーンをレンダリングパネルを開きfryrenderのタブをクリックすると設定画面が現れます。
Environment ConfigurationでEnvironment mappingとBackground mapingのuseにチェックします。
背景はスタジオ風にしたいのでbackground mappingを白に設定します。
これはレンダリングに影響しない張りぼてみたいなのもです。

wakaz024.jpg

Environment mappingでHDRIの設定をします。これがレンダリングに影響する設定パネルです。
pathでHDRIの場所を設定し、saturationを-100に設定して色を消します。

wakaz025.jpg

これでレンダリングの設定は終わりです。簡単!!

Render configurationは特に設定しなくとも大丈夫です。こちらはもっと実務的な感じの設定です。

次回はレンダリングしてみます。

PV3D | VirtualMouseのcontainer.name

前回のサンプルですが、すこし無理矢理な気がしてソースを公開していませんでしたw
要望があったのでソースも載せておきます。

ソース

簡単な説明は以下に・・・

PV3D|Pepervision3D 2.1 alphaでのアニメーション

Papervision3Dが2.1alphaになり、アニメーションも充実してきた、
ということで、早速アニメーションをしてみました。
が!しかし、困ったバグが。。。
CS3で今まで制作していたのですが、どうも2.1ではDAEのアニメーションが読み込まれない模様。
原因は分かりませんが、同じ書き方でFlexやCS4で試すと動くのに、CS3だけ動きません。
MD2に関しては試してないのでわかりませんが、DAEに関してアニメーションをする場合は注意!

で、アニメーションの基本的な書き方は、

Floorplanner Tech Blog

を参考にしてください。
で、アニメーションの制御に関しては、

KYUCON*BLOG

を参考に。
で、そもそも読み込んだDAEにアニメーションがあるのかないのか?
というのを調べるには、

dae.playing
というので、Booleanが帰ってくるので調べれるのかと思っていたのですが、
どうもこれは【再生中かどうか】というのを調べるみたいです。
では、どうやってアニメーションがあるかを調べるには、
dae.animation.channels.length
で、たぶんキーフレームの数を調べてくれるので、
これがアニメーションが無い場合0、ある場合は1以上だと思います。
もうひとつは、
dae.animation.startTime
dae.animation.endTime
というのを使うと、開始秒数と終了秒数がわかるので、
同じ値であれば、アニメーションはない、ということになります。

参考:
LightwaveからColladaファイルを書き出すよ
wonderfl
Blenderのアニメーション付きファイルをPapervision3Dで表示する

PV3D | VirtualMouseで3DEvent

前回の続きです。

サンプル

空きを見つけてちょこちょこいじってみましたが、最終的に

ちょっと力技だけどこんな感じに仕上がりました。

PV3D | MaterialsListに別々のInteractiveScene3DEvent

最近Flashの制作から遠ざかってることもあって
更新が滞ってました(汗

これからも実制作では、しばらくFlashを触る機会が減りそうだけど^^;

リハビリがてらに簡単なPV3Dデモ作ってたら、ふと
Cubeに貼付けるMaterialsListで、一つ一つにEventを付けれないかなーとか思ってみたり。

で、やってたら時間があまりなくなったのでとりあえず現状を・・・。



PV3D | DAEファイルの読込み

DAEを読込んで表示してみた。by t.e.t.u

ソースをダウンロード

サンプル

簡単なDAEファイルを読込んで表示させてみました。
//DAEオブジェクトクラス
import org.papervision3d.objects.parsers.DAE;

var daeObj:DAE;

daeObj = new DAE();
daeObj.load("○○○.DAE");
scene.addChild(daeObj);
DAEクラスって基本的なパラムは扱えるけどいったいどうなってんだろう???
目標は読込んだDAEのオブジェクトに対してペイントをするってこと
なんだけど、とりあえずDAEを読込みはOKとして
テクスチャを読込み3Dオブジェクト(DAE)に貼付けるってのもできた。(ここは次回やる予定)
3Dのオブジェクトに対してペイントするにはVirtualMouseと
テクスチャの応用でなんとかできそうなんだけど
DAEのオブジェクトにはVirtualMouseは効かないようで(あたりまえ)・・・。
ちなみにVirtualMouseを使うと3Dの物体に対してマウスのオーバーなどのアクションを設定できて、
カーソルの位置から関連づけしたテクスチャ用のオブジェクトの座標を取得する、
というようなことは実現できるみたい。(これもそのうち載せときます)

まぁ先輩フラッシャーのサンプルソースとカンとWeb上の情報をたよりに
ここまでできたのも奇跡な気がするけどwこれはかなり難問だ。
想像ではDAEを読込む時に、読込んだ3Dをプレーンな3Dオブジェクトに置き換えて
さらにUVマッピングのデータを元にオブジェクトとして動的にテクスチャを作成・・・。

うーんwかなり現実的じゃない気がするなー(汗
いろいろ調べても同じような事やろうとしてる人がいないし、情報が出てこない。
自分で解析してくしかないのかなー・・・。

PV3D | MaterialとMaterialsList

簡単なマテリアルを作成してオブジェクトに貼付けてみた。by t.e.t.u

ソースをダウンロード

サンプル

立方体の6面に異なるマテリアルを作成し貼付けてみました。
//マテリアルを作成
var material : WireframeMaterial = new WireframeMaterial();
var cl_material_r : ColorMaterial = new ColorMaterial( 0xff0000 );//赤色でべた塗り
var cl_material_b : ColorMaterial = new ColorMaterial( 0x0000ff );//青色でべた塗り
var mc_material : MovieAssetMaterial = new MovieAssetMaterial( "mc_material",true,true );
var ba_material : BitmapAssetMaterial = new BitmapAssetMaterial( "bg1.jpg" );
var bf_material : BitmapFileMaterial = new BitmapFileMaterial( "bg.jpg" );
上からワイヤーフレームのマテリアル
赤と青のべた塗りのカラーマテリアル
ムービークリップをマテリアル化したマテリアル
Flash内部に読込んだ画像を表示するマテリアルと
外部から読込んだ画像を表示するマテリアル
てな感じです。


このままだと裏側から見たときにマテリアルが表示されないので
次の設定をしてあげると表示されるようになるみたい
//裏面の表示設定
cl_material_r.doubleSided = false; cl_material_b.doubleSided = true; material.doubleSided = true; mc_material.doubleSided = true; ba_material.doubleSided = true; bf_material.doubleSided = true;
赤いマテリアルだけわざとfalseにしてみました。

今回は作ったマテリアルを立方体のオブジェクトに貼付けます。
立方体のオブジェクトにマテリアルを貼付けるにはマテリアルをリスト化してあげる必要があるので
以下のようにリストの定義を書いてあげます。
//マテリアルリストを作成
var mList : MaterialsList = new MaterialsList( {
front : mc_material ,
back : cl_material_r ,
right : material ,
left : cl_material_b,
top : bf_material ,
bottom : ba_material
} );
見たまんま、前面にムービークリップ、背面に赤、右側にワイヤーフレーム
左側に青、上面に外部画像ファイル、下面に内部が贈ファイルのマテリアルを設定します。

あとはいつも通りにオブジェクトを定義する際に
先に定義したマテリアルリストを入れてあげるだけ
//立方体オブジェクトを作成
var myCube:Cube = new Cube(mList,200,200,200);
これだけでもういろんな表現ができそうだなー。

PV3D | Camera

今回はカメラをぐりぐり動かしてみました。by【t.e.t.u】

ソースをダウンロード

サンプル

まず今回使用しているのは「Camera3D」というカメラ
これは、カメラを移動しても常に、ある1点を中心に納めようとするみたいです。
他にも「FreeCamera3D」や「FrustumCamera3D」なんてのもありますが、
こっちはまだ手を付けられていません。

定義の仕方はこんな感じ

camera:Camera3D = new Cemera3D(
 target:対象となるオブジェクト,
 zoom:カメラのズーム値,
 focus:カメラのフォーカス値,
);


今回もBasicViewを使っているので
初期設定はイイ感じにやってくれてます。

やってることは、球体のオブジェクトを二つ配置し
片方の球体を中心に円軌道でカメラを動かしてます。

それだけじゃ面白くないのでキーイベントを追加して
ズームやフォーカスも変えられるようにしてみました。

x、y、zの値はなんとなくわかるのですが
zoomやfocusが、値だけだといまいちイメージしにくい感じですね〜

参考サイト
 ・FlaTech+

PV3D | Primitives

お昼食べた後とかすっごい眠くなりますよネ。

そんなときはちょっと頭を使って脳を活性化!

テトリスみたいにブロックを詰んで倒れないようにするゲーム
PERFECT BALANCE

さて、FlashもPV3Dも初心者なのでいきなり難しい事しないで

まずは基本からキッチリやっていきますよ〜!

by 【t.e.t.u】

PV3D | 3Dライブラリー【t.e.t.u】

今回から「WAKAZ.info」は→Profileの3人体制で更新していくことになりました!
金曜日の更新を担当する【t.e.t.u】です。
Flashの経験は浅いですが、今まで多種多様なプログラムを経験してきたので、それを生かしてFlash+3Dでもおもしろいことができたらなぁ〜っと思ってます。
よろしく!

PV3D | MovieMaterialで画像がずれる

Papervsion3DでPlaneのMaterialにMovieMaterialを使い、Planeの中でスライドショーを作ろうと思ったのですが、困った問題にぶち当たりました。
スライドショーなので、Materialに貼るムービークリップは画像数枚を横に並べて、マスクで隠して、自動でスライドさせているものを作りました。
この動きは問題ないのですが、MovieMaterialに貼ったとたん、奇妙な動きに。
変な挙動はこちら
この挙動を見るに、どうもマスクがおかしい。というか右に画像が伸びる分には問題ないのに、画像が左に行くにつれ、マスクもずれる。さらにボタンの位置もどうもおかしい。いろいろ調べる事数日。。。
ようやく原因が判明しました。
わかってみれば他愛もないことなんですが、MovieMaterialの第5引数が肝だということが判明。
取りあえず、直ったMovieMaterialはこちら
で、MovieMaterialの設定として、今までは、Materialのみの指定
new MovieMaterial(mat);
だったのに対して、引数を全部入れた場合、
//wはMaterialの幅、hはMaterialの高さ
new MovieMaterial(mat,true,true,true,new Rectangle(-w/2,-h/2,w,h));
となり、第5引数のMaterialのサイズをちゃんと入れてやらないとおかしな挙動になるそうです。
ちなみに、引数の説明ですが、
第1引数:MovieClipなどのマテリアル
第2引数:Alpha値のサポートの有無
第3引数:アニメーションの有無
第4引数:ゆがみの補正の有無
第5引数:クリップ範囲
となります。メモメモ。

その他Materialの設定として、
var movieMat:MovieMaterial = new MovieMaterial(mat,true,true,true,new Rectangle(-w/2,-h/2,w,h));
movieMat.doubleSided = true;		//裏面も見えるようにする
movieMat.smooth = true;			//よくわからないけど、たぶんスムーズにするのか?
movieMat.interactive = true;			//ボタン機能が有効になる
などなどあります。
参考サイト
note.x : [PV3D2.0] materials.MovieMaterial
タロタローグ:Papervision3DのMovieMaterialの挙動がよく分からん。
タロタローグ:(全ての原因は、第5引数のRectangleだった説)
YK's Home:PV3Dサンプル 表・裏のある平面とマテリアル

PV3D | フィルターを使いたい

PV3Dのオブジェクトに対して、ブラーやグローなどを使いたい場合、以下の2通りがあるみたい。 Planeオブジェクトに対してフィルタを書けたい場合
・useOwnContainer
var plane:Plane = new Plane(mat,w,h,segW,segH);
plane.useOwnContainer = true;
・ViewportLayer
var plane:Plane = new Plane(mat,w,h,segW,segH);
var vpl:ViewportLayer = plane.createViewportLayer(vp,true);
前者がplaneに対してフィルターをかけれるのに対し、
後者はvplに対してフィルターをかけれる。
前者はこれを適用すると、MouseEventの中のいくつかが機能しなくなります。
しかも、重い。
後者の方が全然軽かったので僕はこっちを使っています。
ちなみに、Tweenerでフィルターをかけるときは、
import caurina.transitions.properties.FilterShortcuts;
FilterShortcuts.init();
Tweener.addTween(vpl, {_Blur_blurX:10,_Blur_blurY:10,time:1.0,transition:"easeOutExpo",delay:.0});
という感じでフィルタを使います。

参考
 note.x:DisplayObject3D.useOwnContainer
 鮭とプログラムとか:Papervision3Dをやってみた44
Blogged with the Flock Browser

Tags: , , ,

PV3D | Casting Shadows

shadowtop.png
さらに続けて、zupko.infoから影を作るTipsです。
これも続けて作りたい!作ろう!

→サイトはこちら

PV3D | Reflections

reflect3.png
zupko.infoにてPV3Dで反射のTipsが載っていました。
この反射かっこいいな〜。作りたい。作ろう!


→サイトはこちら

PV3D 2.0 | バージョンアップしたらレンダリングされない

SVNで、PV3Dのライブラリを更新したら、どうやらライブラリが少し変わったみたいで、いままで作っていたPV3Dのファイルが表示されない。
特にエラーが出てるわけではなく、単にレンダリングされないだけだったので、動いてるソースと見比べてみると、どうもカメラの設定が足りないみたい。
自分のソース内のカメラ設定部分に

camera.target = DisplayObject3D.ZERO;

を追加してみたところ、無事レンダリングされました。
カメラのターゲットを指定しろってことか〜。でもZEROってなんだろう?
いつからそうなんだろう?
日本語で訳してくれているサイトがあったのでペタリ。

参考:鮭とプログラムとか

→サイトはこちら

PV3D 2.0 | WOW Engine + Sound Spectrum

wow.jpgWOW Engineという3D物理エンジンライブラリとこの前のSound Spectrumを足すと面白いかな〜と思って作ってはみたものの、なんか違うな〜。単にボックスにSound Spectrumの値を入れただけだから物足りない。
Vertexごとに値を割り当てて、ガビガビしたのに合わせて、中の球をポンポン動かしたかったんだけども。。。
もうちょい調べよ〜。

Tutorialなど
ActionScript3用3D物理エンジンライブラリ「WOW-Engine」
参考サイト
shirotokoro:WOW-Engine
ミカン日記:WOWEngineを使ってみた
[Papervision3D]PV3D + WOW Engine

→微妙なサンプルはこちら

PV3D | Sound Spectrum2

yellowball.jpg
とりあえず第2弾。
テクスチャとライトを設置してみた。
あと、えらく波形がビリビリなるので、参考サイトをまねて、半球で見易くしてみた。
それで、一番の問題としては、Sound Spectrumで音が出ない、波形が動かない、という事があったんですが、
同じブラウザで裏で音のなるFlashサイトを見ていた場合、画面がフリーズしてしまいました。
なんでそうなるのかな〜と検索してるとそんな記事を書いていた方がいました。
イベントとかで使う分には行けそうですね。
リアルタイムにはできないのかな〜。

参考
Papervision3D & SoundMixer
AS3のSoundMixer.computeSpectrumの問題点と対処法
SoundMixer.computeSpectrum() stretchFactor変化デモ
AS3:タイムライン再生の音の波形スナップショットが取れない
SoundMixer.computeSpectrum() マイクの音はキャプチャされない

→サイトはこちら

PV3D | Sound Spectrum

audio.jpgPV3DのプリミティブとSound Spectrumで取得したmp3の波形データを使い、
プリミティブをビリビリさせてみました。
結構楽しい。単純な形なのにmp3を変えるだけで全然違う。
もっと作り込もう。
帯と球の2種類作ってみました。
2つプリミティブが回っていますが、どっちかがLでどっちかがRのステレオ版です。
流れている曲はお友達のLili Hirakawaさんに作ってもらいました。ありがと〜。

注:いきなり音が出ます。
→帯はこちら
→球はこちら


PV3D 2.0 | GreatWhite Basic Primitive

PV3Dのバージョンが2.0になってから、少しレンダリングの方法が変わったので、忘れないようにメモメモ。
おでんおでん。
「PV3D_Basic.as」というファイルを作り、中に以下のコードを書く。
package {
	import mx.core.UIComponent;
	import flash.display.Sprite;
	import flash.events.Event;

	import org.papervision3d.core.proto.MaterialObject3D;
	import org.papervision3d.cameras.FreeCamera3D;
	import org.papervision3d.view.Viewport3D;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.render.BasicRenderEngine;

	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.objects.primitives.*;

	public class PV3D_Basic extends Sprite {
		private var container:Sprite;
		private var vp:Viewport3D;
		private var scene:Scene3D;
		private var camera:FreeCamera3D;
		private var rootNode:DisplayObject3D;
		private var rdr:BasicRenderEngine;
		//プリミティブの定義
		private var cube:Cube;
		private var sphere:Sphere;
		private var cylinder:Cylinder;
		private var cone:Cone;
		private var plane:Plane;
		
		public function PV3D_Basic() {
		  //初期化
			init();
		}
		private function init():void{
			init3D();
			rootNode.addChild(mkCube(0,-175,0));		//立方体を作る
			rootNode.addChild(mkSphere(0,0,0));			//球を作る
			rootNode.addChild(mkCylinder(0,-100,0));	//シリンダーを作る
			rootNode.addChild(mkCone(0,100,0));			//円錐を作る
			rootNode.addChild(mkPlane(0,0,0));			//板を作る
			//繰り返し処理
			addEventListener(Event.ENTER_FRAME,expEnterFrame);
		}
		private function init3D():void {
			//スプライト作成
			container=new Sprite  ;
			addChild(container);
			//ビューポート作成
			vp=new Viewport3D(stage.stageWidth,stage.stageHeight,true,true);
			container.addChild(vp);
			//シーン作成
			scene=new Scene3D;
			//レンダラー作成
			rdr=new BasicRenderEngine;
			//カメラ作成
			camera			=new FreeCamera3D;
			camera.zoom		=3;
			camera.focus	=300;
			//ルートノード
			rootNode=scene.addChild(new DisplayObject3D("rootNode"));
			}
		//レンダリング
		public function expEnterFrame(e:Event):void {
			cube.rotationY += 10;
			rdr.renderScene(scene,camera,vp);
		}
		//立方体
		private function mkCube(xPos,yPos,zPos):DisplayObject3D {

			var wireMat:WireframeMaterial=new WireframeMaterial();
			wireMat.lineAlpha=.5;
			var colMat:ColorMaterial = new ColorMaterial( 0xff00ff ,.8);
			colMat.oneSide=false;
			colMat.lineColor=0xFFFF00;
			var cubeMat:MaterialsList = new MaterialsList({
				front	:colMat,
				back	:wireMat,
				right	:wireMat,
				left	:wireMat,
				top		:wireMat,
				bottom	:wireMat
			});
			var w:Number			=50;		//幅
			var h:Number			=50;		//高さ
			var d:Number			=50;		//奥行き
			var segmentsS:Number	=2;			//横面分割数
			var segmentsT:Number	=4;			//奥行き分割数
			var segmentsH:Number	=8;			//縦面分割数
			var insideFaces:int		=0;			//裏返す面の指定?
			var excludeFaces:int	=0;			//非表示する面の指定?
			var initObject:Object	=null;
			cube=new Cube(cubeMat,w,d,h,segmentsS,segmentsT,segmentsH,insideFaces,excludeFaces,initObject);
			cube.x=xPos;
			cube.y=yPos;
			cube.z=zPos;
			return cube;
		}
		//球体
		private function mkSphere(xPos,yPos,zPos):DisplayObject3D {
			var sphereMat:MaterialObject3D = new WireframeMaterial();
			var radius:Number		=50;		//半径
			var segmentsW:int		=8;			//横の分割数
			var segmentsH:int		=6;			//縦の分割数
			var initObject:Object	=null;
			sphere=new Sphere(sphereMat,radius,segmentsW,segmentsH,initObject);
			sphere.x=xPos;
			sphere.y=yPos;
			sphere.z=zPos;
			return sphere;
		}
		//シリンダー
		private function mkCylinder(xPos,yPos,zPos):DisplayObject3D{
			var cylinderMat:MaterialObject3D = new WireframeMaterial();
			var radius:Number		=50;		//半径
			var h:Number			=100;		//高さ
			var segmentsW:int		=8;			//横の分割数
			var segmentsH:int		=6;			//縦の分割数
			var topRadius:Number	=-1;		//上面の半径
			var topFace:Boolean		=true;		//上面の表示/非表示
			var bottomFace:Boolean	=true;		//下面の表示/非表示
			var initObject:Object	=null;
			cylinder = new Cylinder(cylinderMat,radius,h,segmentsW,segmentsH,topRadius,topFace,bottomFace,initObject);
			cylinder.x=xPos;
			cylinder.y=yPos;
			cylinder.z=zPos;
			return cylinder;
		}
		//円錐
		private function mkCone(xPos,yPos,zPos):DisplayObject3D{
			var coneMat:MaterialObject3D = new WireframeMaterial();
			var radius:Number		=100;
			var h:Number			=100;
			var segmentsW:int		=8;
			var segmentsH:int		=6;
			var initObject:Object	=null;
			cone = new Cone(coneMat,radius,h,segmentsW,segmentsH,initObject);
			cone.x=xPos;
			cone.y=yPos;
			cone.z=zPos;
			return cone;
		}
		//板
		private function mkPlane(xPos,yPos,zPos):DisplayObject3D{
			var planeMat:MaterialObject3D=new WireframeMaterial();
			var w:Number=400;
			var h:Number=400;
			var segmentsW:Number=3;
			var segmentsH:Number=2;
			var initObject:Object=null;
			plane = new Plane(planeMat,w,h,segmentsW,segmentsH,initObject);
			plane.x=xPos;
			plane.y=yPos;
			plane.z=zPos;
			return plane;
		}
	}
}
レンダリング時(表示時)にsceneとcameraとviewportを設定しないとダメみたい。たぶん。
立方体だけぐるぐる回っています。
立方体のマテリアルは面ごとに設定しないとエラーになっちゃうみたい。
んで、これを新規で作ったflaファイルのプロパティのドキュメントクラスに「PV3D_Basic」と書いてパブリッシュすればおでんのできあがり。

PV3D | Bend modifier


PV3Dのモデリングデータをボーンを入れたようにぐにゃぐにゃ曲げれるサンプルサイトです。
これは第2弾ですが、第1弾ではお札がぱらぱら曲がってました。

→サイトはこちら

PV3D | The Papervision3D Contest!


PV3Dのコンテストがあるそうです。
サイトを送ればいいのかな?

→サイトはこちら

Website | SPEC5ZIGEN

spec.jpgPapervision3Dを使って、トラックを矢印キーでぐるんぐるん走らせることができる「spec5zigen」のサイトです。
IK(インバースキネマティクス)を使って、荷台がボディに着いて来るようになっています。
バックでめり込んだりしちゃいますが、そこはこれから直すという事で。

→サイトはこちら

PV3D | Dragging in 3D

earth.jpg地球をドラッグすることで、ごろごろころがるPV3Dのマウスストーカーみたいな感じの「Dragging in 3D」です。
ライティングが綺麗です。

→サイトはこちら

PV3D : DAEを複数で読み込み

MAXから書き出したCollada形式のDAEファイルを複数読み込みをしていたんですが、
なかなか表示しないので、調べてみた所、リスナーを付けて、順番に読み込んであげなきゃいけないみたい。
まずはクラスをインポート
import org.papervision3d.events.FileLoadEvent;
import org.papervision3d.objects.parsers.DAE;
その後、DAEの読み込みとリスナーを追加
private function hoge(){
	var dae:DAE = new DAE();
	dae.load("hoge/hoge.dae");
	//リスナー追加
	dae.addEventListener(FileLoadEvent.LOAD_COMPLETE,onDAE_Loaded);
}
private function onDAE_Loaded(event:FileLoadEvent){
	trace(event.type);	//読み込めたらloadCompleteと出る
}

参考サイト:pv3d.org

KENZO ポピー

kenzo.jpg
KENZOが創ったバーチャル・ガーデンであなただけのポピーが育てられます。
種のまき方はあなたが撮ったポピーの写真をウェブサイトにアップロードするだけという感じ。
フィールドビューでいろんな人がとった写真をPV3D空間でみれます。

サイトはこちら

TURBULENT

morph.jpg前回のMorph3Dから更にいろんなモーフィングができてます。モーフィングの描画方法も変更可能。

→リンクはこちら

TBWA/COMPACT - Accueil

tbwa.jpgコミカルな動きとPV3Dをうまく組み合わせてとても気持ちのいいサイトになっているTBWAのサイト

→サイトはこちら

Morph3D

morph3d.jpg Papervision3Dのオブジェクトをモーフィングさせるサンプルです。
→リンクはこちら

Quem foi o melhor?

colabrasil.jpg Coca colaのブラジルサイトにあるPV3Dを使ったボクシングゲームです。
MaradonaとBirobiroの対戦。サッカーなのになぜにボクシング?
→サイトはこちら

Spectra Visual Newsreader | msnbc.com

spectra.jpgmsnbcのニュースをビジュアル的に見せてくれるサイト「Spectra」です。

操作性から動きまで気持ち良さ満開です。

→サイトはこちら

UFC 84

ufc84.jpg
総合格闘技「UFC 84」のサイト。
マウスに合わせてカメラが動いている感じの効果を使っています。
たぶん、PV3Dでなくてもできそうですが、奥行き感がなかなか綺麗にできてて良いです。

→詳しくはこちら

Audi RS 6 | Performance from every part

audi.jpg PV3Dをふんだんに使ったAudi RS 6のサイト
動画もすごい!

tracing 3D objects

draw.jpg3D studio maxで書き出したデータをPV3Dにてトレースアニメーションするサンプルのようです。
colorから色も選べます。

→リンクはこちら

PV3D : Interactive Cube

cube.jpg
gotoAndLearn()にてPapervision 3DのクリックできるCubeの作り方が載っています。
押したと同時にアクションさせると面白そうです。
→リンクはこちら

3D Glasses

3d_megane.jpgPapervision 3Dで3Dメガネをかけてみると、立体っぽく見えるデモです。
メガネがないとなんだかよくわかりませんが、かけてみると面白いです。
コンポーネントも落とせるみたいです。
→リンクはこちら

PV3D:UVテクスチャを貼る

car_texture.jpg
前回はDAEファイルのボディ部分にUV情報がなかったので、変なマッピングになってしまったのを、今回はボディにUV情報を入れてDAEを書き出し、テクスチャを貼ってみました。
使った画像は全部で6枚。
下の画像がまとめたものです。左のバラバラになっているのがボディのUVマップ。こんな感じで書き出されると、なんだかプラモのパーツを思い出します。そして右の5枚の画像はそれぞれウィンドウ、ヘッドランプ、エアロ、タイヤ、リアランプのテクスチャになります。
texture.jpg実際にテクスチャを貼ったpv3dは以下から。
※注意:テクスチャやらdaeファイルやらを読み込むため、少しローディングに時間がかかるかもしれません。
→リンクはこちら


PV3D : テクスチャを貼る

car.jpg
ようやくPV3DにてDAEファイルの読み込みが出来たので、このままテクスチャも貼っちゃいたくなっていろいろ調べたときの備忘録。

STEP.1【DAEファイルの書き出し】
・MAXを使い、DAEを書き出す。その際Materialの名前やテクスチャの名前を英語で付けておく。
・テクスチャ等を既にMAX上で設定している場合、リンクが絶対パスになるので、テキストエディタかなにかでDAEファイルを開き、「C:\〜」から始まるテクスチャファイルを指定している場所を探し、自分の環境に合わせて、相対パスで書き直す。

STEP.2【Flash CS3からDAEファイルを読み込む】
・DAEの読み込み方がさっぱりわからなかったので、mrdoobさんのサイトにあったsourceを拝借。daeと書いてる部分を書き直したら一応読み込んだ。

STEP.3【テクスチャの無いマテリアルに色を付ける】
テクスチャが無い部分に関しては、ワイヤーフレーム表示になってしまうので、Flash内で生成することに。
まず、MAXで付けたMaterialの名前を探すため、一度ムービープレビューをしてみる。
「出力パネル」で「not found」と出ているMaterial名っぽいものが出るので、MaterialListに登録する。
Papervision3Dやってみる(4) 【マテリアル】を参考に書き書き。

//ベタ色設定
var Ymaterial : ColorMaterial = new ColorMaterial( 0xffff00 ,.8);//黄色でべた塗り,アルファ値(0〜1)
Ymaterial.oneSide = false;    //裏のポリゴンに色をつけるかどうか

STEP.4【複数のテクスチャを重ねる】
ベタ色を付けると凹凸がなくなってしまうので、とりあえず下地を残して上に別のテクスチャ貼ることに。
CompositeMaterialというのが複数テクスチャを貼れるみたいです。
note.xさんmoriBlogさんのサイトを参考に書き書き。

なんとか重ねて表示までできました。

【その他参考にしたサイト】
ラジオシティ風レンダーベイキング
レンダーベイキングってなんだ?
Collada形式の3Dモデルを読み込む

whitevoid

whitevoid.jpg
たぶんPapervision3Dを使用して制作されている、ベルリンのデザインスタジオ「whitevoid」のポートフォリオです。少しローディングするかもしれませんが、見易くて楽しいサイトです。
→リンクはこちら

100チアガール

chear.jpg
100人のチアガールが応援してくれる就職応援サイト「イーキャリア」のプロモーションサイト?
Papervision3Dを使用しているようで、グリグリ動きます。ソートも可能。最近中に浮いてる感じのサイトが増えてきました。
→リンクはこちら

Red Bull Flight Lab

redbull.jpg
Papervision3D 1.5を使って作られたRed Bullのフライトシミュレーターサイトです。
自分で切り取ったり、画像をはったり、色を付けたりして飛行機を完成させて飛ばす事ができます。
操作がかなり難しいですが、自分の飛行機を作るのは楽しいですね。
さらに、このサイトを制作した方のブログも公開されています。
→リンクはこちら

DAE サイズ設定 on 3DSMAX

サイコロをPV3Dに表示する場合。
3dsMAXでシステム単位inch ディスプレイ単位mmにおいてサイコロのサイズ20mm×20mm。
flash developでflex通してパス設定。
PV3D1.5のパスがproject class pathで設定しても出来なかったのでflex_sdk_2_hf1.frameworks.sourceの中にPV3Dのorg, com, flファイルをコピーし、frameworks内のflex-config.xmlを編集。
こんな感じ。

       <source-path>
          <path-element>locale/{locale}</path-element>
          <path-element>source/</path-element>
       </source-path>

DAEサイコロのPV3Dソース参考サイト。サイトはこちら
DAEファイルとgifファイルはmain.asと同じ階層に入れておく。

Blogged with Flock