前の記事から一ヶ月以上経ってしまいました…。 AS3.0が少しだけわかってきたので、FLARToolKitとPapervision3Dをもうちょっとだけがんばってみる。 今までこのブログに載せていたFLARToolKitは、すべてFLARToolKitに備え付けのサンプル、SimpleCube.asをもとにしていて、認識したマーカーと常に同じ座標に3Dオブジェクトが表示されているというものでした。これをもう少しだけ変更して、3Dオブジェクトを常にマーカーと同期させるのではなく、マーカーの座標を利用しながら3Dオブジェクトの動きを変化させることができるようにしたいと思います。 言葉だけではわかりにくいですが、以下のようなことがしたいわけです。 今回もFLARToolKitのサンプル、SimpleCube.asをもとに変更していきます。 (SimpleCube.asの動かし方はSaqoosha
マウスドラッグでキューブを回転できます。 前回は床の真上に光源があるという都合のいい前提だったので、各頂点のx,z座標がそのまま床の座標に対応していたが、今回は光源の向きが斜めで影が映る面も二つあるので、光源と頂点を結ぶ直線が面と交差する点を求める必要がある。 直線の方程式は P = A + tV (A:直線上の1点、V:方向ベクトル) 面の方程式は N・(P - P0) = 0 (N:法線ベクトル, P0:平面上の1点) この二つの式からまずtを求めて、直線と平面の交点であるPを求める。 (この例ではAは光源の座標、Vは光源と頂点を結ぶベクトル) package { import flash.display.*; import flash.events.*; import flash.filters.*; import flash.geom.*; import org.papervisi
Papervision3Dの行列操作クラスを使ってみる コンストラクタ var matrix:Matrix3D = new Matrix3D([ a, b, c, d, e, f, g, h, i, j, k, l ]); 同次座標を使うので4x4の行列になるが 最後の行は 0, 0, 0, 1 で固定。 したがって、コンストラクタでは 最初の3行4列のそれぞれの値を指定すればいい。 よく使う行列の取得 Identity Matrix var identity:Matrix3D = Matrix3D.IDENTITY; 1000 0100 0010 0001 X軸の回転行列 X軸で30度回転するMatrixを取得する var xMat:Matrix3d = Matrix3D.rotationX( 30 * Math.PI / 180 ); 1000 0cosθ-sinθ0 0sinθcos
PV3Dまとめ(超基礎) 【カメラとは】2008/03/12 ◆PV3Dのカメラについて勉強したい ◆3種類のカメラがあるのだけど、何が違うのか。 ■PV3Dのリビジョン ・Papervision3D 2.0(GreatWhite) rev.439(2008.2.29現在)。 ▼PaperVision3Dでよく出てくる単語 全くAS3.0も3Dもわからん、という状態から始めて、もう2ヶ月経つにも関わらず、未だ意味がよくわからないままの単語がいっぱいあります。色々新しいことを試してみるんですが根本的なことがわかっていないため、少々整理。 ◆1.【 viewport 】 :ビューポート PV3D2.0から追加。実際に3D空間を映すスクリーンのような矩形オブジェクト。 ──────────────────────────────────── Viewport3D(
エフェクトを利用しています。 ちょっと前に作ったやつです。 こちらのサイトを参考にさせてもらいました。 こんな感じです。マウスの位置によってCubuが回転します。あと色も変わります。 エフェクト利用の時の注意点。 エフェクトを利用する場合は、GreatWhiteと同じフォルダにあるEffectsの中のsrcまでパスを通します。 GreatWhiteの中にあるViewport3Dやマテリアル系は、エフェクトを利用するためのプロパティやメソッドを持っていません。 Effectsの中のViewport3Dなどを利用します。 GreatWhiteの中のものを利用するとエラーが起きます。 以下、ソースです。 package { import flash.display.BlendMode; import flash.display.Sprite; import flash.display.Stage
マウスドラッグでキューブを回転できます。 PV3D 2.0で影を表示したい場合、複数のカメラを用意して、一台で下からオブジェクトを映した映像を使って影を表示するというやり方があるようだが、 http://mrdoob.com/blog.php?postid=461 このデモでは影の座標を計算して表示している。 キューブの回転行列はtransformプロバティに格納されているので、その行列を使えばキューブの8頂点の座標を計算する事ができる。 (このデモでは)影を映す面はxz平面に平行(y座標は固定)なので、求めた座標のx,z座標がキューブの頂点に対応する平面上の点であり、その点集合の凸包が影の輪郭になる。 package { import flash.display.*; import flash.events.*; import flash.filters.*; import flash.
PaperVision3D 2.0の各回転処理によってどういう方向に回転するかの確認用 上段左からRotationX, RotationY, RotationZを加算する事による回転、 下段左からroll(), pitch(),yaw()による回転 各軸は赤:X軸、青:Y軸、緑:Z軸 package { import flash.display.*; import flash.events.*; import org.papervision3d.core.*; import org.papervision3d.core.geom.*; import org.papervision3d.core.math.*; import org.papervision3d.scenes.* ; import org.papervision3d.objects.*; import org.papervis
久々のPV3Dネタ。 アクセスログ見てたら、FxUGのフォーラムでオレのエントリが引き合いに出されてたんで、これについて補足してみる。 とりあえず、 var bitmapMaterial:BitmapMaterial = new BitmapFileMaterial("sample.jpg"); は、マズいんじゃないかと。 それはおいといて、上記のトピックは「 MovieMaterial を使えば、precise が有効にできる。」という解釈で終了してる感じだけど、そもそも precise プロパティで制御するパースペクティブコレクトの機能は、BitmapMaterial クラスで提供されてるものなので BitmapMaterial を継承する全マテリアルで指定が可能なハズ。MovieMaterial も、そのひとつっていうだけのハナシ。 というわけで、基本である BitmapMate
categories Papervision3D (12) flash作成手順メモ (20) 自作ゲーム(その1) (3) 自作ゲーム(その2) (3) 自作ゲーム(その3) (3) 自作ゲーム(その4) (3) 自作ゲーム(その5) (3) 自作ゲーム(その6) (5) 自作ライブラリ (6) flashゲーム作成記 (25) ゲームの思い出 (2) PV3D基本編 (5) その他 (16) ネット対戦3D格闘ゲーム作成 (35) 技術検証 (29) 他サイトゲーム (1) archives February 2016 (1) January 2016 (1) October 2015 (1) September 2015 (2) August 2015 (2) July 2015 (1) May 2015 (1) March 2015 (1) March 2014 (4) Februa
PV3Dでの影のつけ方は謎が多かったのですが、その方法がzupko.infoで紹介されていましたので試してみました。空間上に散らかった立法体の影が地面に表示されます。 demo (require Flash Player 9) source (100行, with Papervision3D 2.0 beta, zupko.infoで紹介されているShadowCaster.asも必要です) ShadowCasterクラスのロジック 影を反映するマテリアルが用意されていないので、ロジックとしてはMovieMaterialの元となっているDisplayObjectに影を描写して反映するというもの。 処理速度の最適化 意外と困ったのはPC負荷が大きかったこと。いろいろパラメーターを調整しましたが最も効果が大きかったのは、MovieMaterialの元素材のサイズを小さくすること。今回のサンプルは
categories Papervision3D (12) flash作成手順メモ (20) 自作ゲーム(その1) (3) 自作ゲーム(その2) (3) 自作ゲーム(その3) (3) 自作ゲーム(その4) (3) 自作ゲーム(その5) (3) 自作ゲーム(その6) (5) 自作ライブラリ (6) flashゲーム作成記 (25) ゲームの思い出 (2) PV3D基本編 (5) その他 (16) ネット対戦3D格闘ゲーム作成 (35) 技術検証 (29) 他サイトゲーム (1) archives February 2016 (1) January 2016 (1) October 2015 (1) September 2015 (2) August 2015 (2) July 2015 (1) May 2015 (1) March 2015 (1) March 2014 (4) Februa
どうも。 ちょっと思いついたのでメモ。 最近 Papervision3D の勉強とかをしてたりして、カメラ(Camera3D)の移動がよくわからなかったの考えていたら思いついた。 ある 3D オブジェクトを Scene3D に addChild して、その回りをカメラが回転したいときの技。 よくやる手としては カメラを回すのではなく、Scene3D に DisplayObject3D を追加してそいつを回転させる。 そうすることでカメラがその回りを回転しているように見える。 でも、この方法では本当にカメラが回転しているわけではない。 じゃあカメラを原点中心目線で回転させる方法は? camera.rotationY とかをいじっても回転しない。 何でだろうとか色々調べてもわからなかった。 わかる人は教えて欲しいのだが、わからなかったので自分なりに回転する方法を考えた。 Scene3D
Home > Flash (ActionScript) > [Papervision3D #1] テクスチャとシェーディングの同時適用法 Newer Older [Papervision3D #1] テクスチャとシェーディングの同時適用法 Papervision3D で少し遊んでみました。本来ならテクスチャとシェーディングは同時適用できない(どちらもマテリアルのため)ですが、BlendMode を活用して同時適用してみました。 1/27 追記: 嘘でした、ごめんなさい。ShadedMaterial で実現できるようです。今日も迷子さんで詳しく解説されていますので、そちらをご参照ください。あー、自分嘘ばっか。もう知ったかぶりはしません・・・。 デモはこちら シェーディングを施すと一気に質感が良くなりますね。Papervision3D のシェーディングは多分擬似だと思うのですが(擬
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く