Papervision3Dでウォークスルーをさせようと思ってます。 キャラクターが水平な地面を動くだけなら壁の判定だけすればいいんですが 凹凸のある地形に沿って動かしたいので 足元のポリゴンの高さを調べる必要があります。 Shockwave3DにはmodelsUnderRayっていう レーザーを飛ばしてポリゴンに当たった座標が調べられる機能があったんで Papervision3Dにもあるかなーって調べたけど見つかりませんでした。。 見つけられなかっただけで本当はあるのかもしれないけど、 諦めてmodelsUnderRay的な機能を作る事にしました。 やってることは、対象のメッシュモデルの全三角ポリゴンに対して、 視線と三角形が交差しているかひたすらチェックしていって、 交差しているものがあったら交差情報を返すという感じです。 レイトレース:3角形と視線の交差判定 ここのサイトを参考にして組
Papervision3Dを勉強しなさい、とのお告げを受けたので 主要ポイントを押さえていくことにします。 まずは、QuadrantRenderEngineクラスについて。 これはポリゴン同士が交差したり接近した時に 表示が欠けるというか、前後関係がおかしくなる問題を 解決するためのクラスです。 使い方は下記のようにレンダラとして指定するだけです。 renderer = new QuadrantRenderEngine(QuadrantRenderEngine.ALL_FILTERS); 引数は下記の3種類あります。 ・QuadrantRenderEngine.CORRECT_Z_FILTER →ポリゴンの前後関係を正しくなるよう並び替える。 ただし交差し合っているポリゴンは補正できない。 ・QuadrantRenderEngine.QUAD_SPLIT_FILTER →必要に応じて交差ポ
attitude Control(要:FlashPlayer9) haramakotoさんのエントリー「方向ベクトルからMatrix回転への変換」を読んで。 ある方向に形状の任意軸ベクトルを揃えることで、姿勢を制御するというお題。 haramakotoさんはクォータニオンで挑戦されているようなので、オレは行列でやってみた。正直言ってオレもよくわかってないんだけど、なんとなく上手くいったので書いておく。 例えば、ある形状のY軸を適当な方向に向けたい場合の手順は 姿勢をコントロールしたいオブジェクトのY軸ベクトルをゲット — [1]元の姿勢 ゲットしたY軸のベクトルに目標座標のベクトルを加算して新しいベクトルをゲット — [2]変形後の姿勢 [1]と[2]の外積をとって、法線ベクトル(回転軸)をゲット — [3] 二つのベクトルの角度をゲット — [4] [3]のベクトルと、[4]の角度でも
PaperVision3D 2.0 Betaで、InteractiveScene3DEvent を使ってマウスインタラクティブを実装するメモ
前回作った、マウスのクリック位置に応じてオブジェクトが移動するデモを応用して、平面上じゃなく球面上をオブジェクトが移動するものを作ってみた。ヨユーで出来たみたいな物言いだけど、オレには難易度高すぎな課題だった…orz。 InteractiveFacelevelTest3.swf(要:FlashPlayer9) 平面上を移動させたい場合は、変化する座標が2軸だけなので2Dと同じ感覚で処理すれば、まぁ問題無い感じで動く。球面上を移動させたい場合は、この考え方で実装すると始点と終点の角度が大きくなるにつれ、移動するオブジェクトが球体にメリ込んじゃう。 失敗例(要:FlashPlayer9) Tweenerのベジェ補間とかを上手く使えばソレっぽいものが出来そうな気もしたんだけど、いい加減3Dプログラミングにおける数学的知識も蓄えていかないといかんなぁと思って、クォータニオンで座標変換することに挑戦
mztm.jp 会社概要 実績 スマホのブラウザで即参加! Category 梅原 Raspberry Pi Picoにuf2ファイルを書き込む Post date 2024/03/08 HardwareWatchdogTimerModuleSMD Post date 2023/07/27 getWiFiList Post date 2023/04/02 Zipper Post date 2023/03/20 ネットワーク上のデバイスを探す Post date 2022/11/13 HardwareWatchdogTimerModule Post date 2022/05/20 HardwareWatchdogTimer Post date 2022/05/02 IRリモコンを作ってみた Post date 2022/02/27 DMX照明をコントロールしてみた Post date 202
ルービックキューブを作っていてハマった箇所についての自分メモ。 09/09/17 時点で、Papervision3D_2.1.920.swc では org.papervision3d.objects.primitives.* のプリミティブに対して直接回転をかけるメソッドやプロパティが全部オイラー角仕様になっている。 なので、 obj.rotationX += rotDeg; とか、 obj.transform.calculateMultiply(obj.transform, Matrix3D.rotationY(rotDeg * Math.PI / 180)); とかみたいに回転をかけようとしても、ジンバルロックが起きて自由自在に操作ができない。 これは、org.papervision3d.core.math.Quaternion のクォータニオンを使えば回避できる。 でも、内部的に Q
左側のトランジッション名をクリックするとそれにあわせて姿勢を変えます。 package { import flash.display.*; import flash.events.*; import flash.text.*; import flash.utils.*; import org.papervision3d.core.*; import org.papervision3d.core.geom.*; import org.papervision3d.core.math.*; import org.papervision3d.scenes.* ; import org.papervision3d.objects.*; import org.papervision3d.objects.primitives.*; import org.papervision3d.cameras.*;
(3x3の)回転行列Mが分かっている時の回転軸ベクトルは ( M.n32 - M.n23, M.n13 - M.n31, M.n21 - M.n12) 回転角は arccos((Trace(M) - 1 ) / 2) 4x4の同次座標の場合、(n44成分が1なので)回転角は arccos((Trace(M) - 2 ) / 2) で求まる。 (PV3DのDisplayObject3D.transformは同次座標) (Traceは対角成分の和、PV3DのMatrix3Dにもtraceというプロパティがある) 下のキューブはマウスドラッグで回転できます。 回転後に上のやり方で回転軸と回転角を求めています。(黒い線が回転軸) ESCキーで元の姿勢に戻ります。(検証のためにもとに戻す時は回転軸を使って逆回転させています。) package { import flash.display.*; im
Blenderで作ったアニメーションを、Papervision3Dで使う方法の解説です。 Flashで3Dアニメーション付きのファイルを扱う場合、3DソフトはフリーソフトのBlender、FlashはPapervision3Dのライブラリを使用するのがポピュラーみたいです。 Papervison3Dでアニメーション付きの3Dファイルを読み込む場合は、Collada形式(拡張子.dae)のファイルを使用するのですが、BlenderからPapervision3Dで使えるdaeファイルを書き出すのが、ちょっといやかなりやっかいで、この工程が作業の中で一番のポイントとなります。私もうまくいくまでほんと何度も失敗しました。 試行錯誤した結果、重要だったのは以下の2点でした。 ・Blenderの最新安定版(12月18日現在2.48a)をインストールすること ・Python2.5.2(←最新版ではないの
This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.
Papervision3DでMaterialListを使った場合に、テクスチャの更新・変更方法がわからずにつまづいたのでメモ。ネットを探してもほとんど記事がないので、ちょっと困りました。 問題点 Cubeのテクスチャ設定方法は直接MaterialObject3Dを指定するのではなくMaterialListを経由して設定します。その場合にcube.materials(cubeはCubeのインスタンスとします)に新しいMaterialListを設定しても更新されません。 例: cube.materials = new MaterialList( { front:new BitmapFileMaterial("hoge.jpg") }); // Cubeのマテリアルは更新されません ちなみにPlaneの場合は直接plane.materialプロパティーを上書きすればテクスチャが更新されます。 解
demo1「こんなに便利!Framework」 講師:むらけん demo2「Adobe AIRをはじめよう!」 講師:太田禎一@Adobe社 demo3「イベントを制する者、ActionScript 3.0を制す」 講師:野中文雄 司会:A.e.Suck 特別コメンテーター:森巧尚 demo1:こんなに便利!Framework 今日紹介するFramework&ライブラリ AS2系 AS3系 超絶系 AS2系 FuseKit(http://www.mosessupposes.com/Fuse/) Tween補助&足回り効率化ライブラリ 豊富なMovieClipの拡張プロパティ 簡単なTweenを補助する拡張function群&ZigoEngine 動作をストックし、順に(同時に)実行できるFuse CASA Framework(http://casaframework.org/) 足回り効率
前回から画面上のオブジェクトをドラッグすることを実装するために スクリーン座標からワールド座標の取り出し方を探していたのですが、、、 つづきを読む
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く