★Flash 3D【 Papervision3D 2.0 】情報交換★

2009/03/19(木) 21:31:58ID:sOf7DsqH
マテリアルをつけてない素のCubeを出したり消したりだとどーよ?
2009/03/19(木) 23:09:06ID:4npumRp1
Cubeはマテリアルnullにはできないだろ
2009/03/19(木) 23:12:54ID:4npumRp1
Cubeはマテリアルnullにはできないだろ
4741
垢版 |
2009/03/20(金) 00:18:12ID:nPh+mKh4
>>44
返信がりがとうございます
自分の説明不足でしたが、Cube作成→トゥイーン→消去は、作った一つのCubeを出したり消したりのサイクルではなく、
新たにCubeを作り出してトゥイーン後破壊し、また新たに別のcubeを作りトゥイーンさせ破壊・・・というTimerを使った繰り返しの処理なんです
var timer:Timer = new Timer( 600 );
timer.addEventListener( TimerEvent.TIMER, timerFunc );
timer.start();
function timerFunc():void{
createCube();
}
function createCube():void {
Cubeを作成して、>>41のTweenerイベント処理、終了後にtweenEndへ
}
function tweenEnd( cube:DisplayObject3D ):void {
>>41のCubeを削除の処理
}

マテリアル未使用Cubeは作り方がわかりませんでした・・・
そもそものCubeを綺麗に削除する方法のセオリーって無いのでしょうか
2009/03/20(金) 16:54:19ID:L59OuUmI
cube.materials;
cube.material.destroy();

cubeにmaterial,materialsなんてプロパティなくね?
ttp://docs.pv3d.org/
4941
垢版 |
2009/03/20(金) 18:39:07ID:nPh+mKh4
>>48
Public PropertiesのShow Inherited Public Propertiesをクリックすると出てきます

調べてみたらCubeにdestroy()がある事を知って、実行してみましたが使用メモリは相変わらずで・・・
ちょっとソースのCube.asクラスのdestroy()関数にtraceを入れてみましたが、
public function destroy():void
{
trace("test1");
var mat:MaterialObject3D;
for each(mat in materials){
trace("test2");
mat.unregisterObject(this);
}
}
cube.destroy()でtrace("test1")は実行されましたが、trace("test2")は反応がありませんでした
cube.materialsをtraceすると表示されるので6回ループが起こると思うんですが・・・
mat.unregisterObject(this)の処理の意味もよくわからずでどんどん混乱して来ましたorz
5044
垢版 |
2009/03/20(金) 20:37:00ID:lXny2v1Y
>>45 すまん、寝ぼけてた

オレも前からプリミティブの解放はよくわかってなかったんで調べ中。
まずは単純なplaneで
plane = new plane();
myScene.addChild(plane);
って感じで10個登録してから、これを解放してみる。

mySceneに含まれているプリミティブの個数を調べようと
myScene.numChildrenすると、DisplayObjectContainer3DのnumChildrenが呼ばれて
10って値が返ってくる。ここまではいいんだけど、myScene.childrenを使ってプリミティブの
名前を取り出そうとすると、nullが5個表示されてしまって、残りの5個が正しく名前が表示される。
でも、myScene.childrenList()を呼ぶとちゃーんと10個分の名前が表示される。
この2つの処理の違いは、DisplayObjectContainer3D.asをみると、
なんだけど、ちゃんと10個表示される方はこれ↓
name = name || child.name || String( child.id );
this._children[ child ] = name;
でもって、最初の5個がnullになっちゃう方は
this._childrenByName[ name ] = child;
っていう方法で格納してるみたいだ。
_childrenと_childrenByNameは共にDictionaryクラス。_childrenByNameが妙な事になってるから
これを返すmyScene.childrenを使ってremoveChildしようとしても5個はnullだから
解放されないわけだ、ダメじゃん。

続く、かもしれない。
2009/03/20(金) 21:24:05ID:lXny2v1Y
>>50続き

いきなり間違えた。
_childrenByNameに罪はなかった。_childrenByNameはDictionaryなのに配列と
同じようにアクセスしてた。

Scene3D、突き詰めるとDisplayObjectContainer3Dに含まれているプリミティブを
取得するには、DisplayObjectContainer3D.childrenを使うとDictionaryとして取得できる。
keyは
name = name || child.name || String( child.id );
として設定される。valueはプリミティブっぽい。
DisplayObjectContainer3Dに含まれるプリミティブを全消しするには
var childList:Object = myScene.children;
for (var key:String in childList) {
var value = childList[key];
myScene.removeChild(value);
}
ってな感じでいいのかなと。
removeChild()の引数はDisplayObject3D。
removeChildByName()ってのもあって、これはDisplayObject3Dの名前?(toString()したもの?)で
削除できるけど、処理内容をみると重そう。

これらの処理でScene3dからプリミティブは消えるけど、プリミティブ自体が
消えた訳じゃないはず。
SWFProfilerで観察してるとGCが効いて増減しつつも、徐々にメモリ使用量が増えてくし。

続く、かもしれない
2009/03/20(金) 21:57:30ID:lXny2v1Y
>>51続き

厳密には、DisplayObjectContainer3D.asでは、
protected var _childrenByName :Object;
private var _childrenTotal :int;
と宣言されていて、その後、
this._children = new Dictionary( false );
this._childrenByName = new Dictionary( true );
となっている。

あと、
Scene3D → SceneObject3D → DisplayObjectContainer3D
という関係で、Scene3Dに対するremoveChild()はDisplayObjectContainer3Dの
removeChild()ではなく、SceneObject3DのremoveChild()が呼ばれている。
そこでは、自身が管理しているDisplayObject3Dを削除した後に、親クラスの
DisplayObjectContainer3DのremoveChild()を呼んでいると。
なんで、DisplayObject3DでもDisplayObject3Dを管理しているのかはよくわからない。
GCの関係?

なかなかプリミティブ自体の削除までたどり着かないなぁ。
2009/03/20(金) 23:50:40ID:lXny2v1Y
Plane→TriangleMesh3D→Vertices3D→DisplayObject3D→DisplayObjectContainer3Dと順に辿っていく。

[Plane]
引数のmaterialは親クラスに渡してて、生成物は
Vertex3D()とTriangle3D()なんだけど、それは
this.geometryという、親クラスが持ってるらしい変数に突っ込んでるだけ。
一時変数だけのクラス。

[TriangleMesh3D]

親クラスのmaterial変数に入れてる。
あとprivateメンバ変数が3つあって、うち2つがArray、もう一はRenderTriangleクラス。
これらがイマイチ不明。デストラクタに該当するものがないっぽい。

[Vertices3D]
一時変数だけのクラス。ただ、boundingBoxとかを生成してreturnで返してるから、
それを受け取った側で解放してなきゃアウト。

[DisplayObject3D]
なかなか読み応えあるね。yawとかpitchとかlookAtはここで定義してあるんだ。
いろいろなprivate, publicな変数がある。
親クラスのDisplayObjectContainerにaddChildしている箇所はここなんだけど、
removeChildに該当する処理はないと。DisplayObject3DにDisplayObject3Dを
入れた場合は、当然、自分でremoveChildしなさいと。それから、
[TODO: If you add a child object that already has a different display object container as a parent,
the object is removed from the child list of the other display object container.]
って書いてある。
デストラクタに該当するものがないっぽいけど、new Plane()とかで生成された頂点や面の情報は
Plane自体を切り離せばDisplayObject3Dも分離されるみたいだから、あとはGCにがんばってもらえば
なんとかなるのかもしれない。(ホントか?)

マテリアルを貼り付けていないPlaneは、newしたらそれを参照しているトコを全て切り離せばGCまかせっぽい。
2009/03/21(土) 00:27:54ID:fKmdslcf
次は、planeにmaterialを貼り付けて、それを解放する場合。
(planeに貼ったMaterialObject3Dをどこで持ってるのかイマイチわからんのだけれど)

単純そうなColorMaterialから辿ってみる。
ColorMaterial→TriangleMaterial→MaterialObject3D

[ColorMaterial]
カラーコードすら保持していないけど、指定色で三角形を書いてるのはここ。
beginFill()、moveTo()、lineTo()、endFill()とか。

[TriangleMaterial]
こいつはつなぎなので無視。

[MaterialObject3D]
色コードとかBitmapはここで持ってる。
複数個のマテリアルを管理できるっぽい?
マテリアルの管理は、MaterialManagerクラスがしてるみたい。MaterialManagerクラスは
シングルトンみたいなもんでSWF全体で1つしかない。
MaterialObject3Dには、destroy()がある。といっても
objects = null;
bitmap = null;
MaterialManager.unRegisterMaterial(this);
これだけ。大雑把すぐる。
ColorMaterialクラス自身はdestroy()メソッドを持ってないけど、ちゃんと呼ばないとダメかな。

ついでにBitmapMaterialも読んでみたけど、こいつはdestroy()を持っていて、
一通りnull代入してるし、bitmapに対してはdispose()してるし、親のMaterialObject3Dの
destroy()も呼んでる。

BitmapFileMaterialクラスははBitmapMaterialクラスの派生クラスなので同上。
2009/03/21(土) 01:19:02ID:fKmdslcf
Planeはわかったので、次はCube。
頂点やら面情報を持ってるところはPlaneと同じ。頂点情報は共有してるかもしれないけど
今回のテーマ(ちゃんと解放したい)とは関係ないので読んでない。
>>41氏が>>49で書いてるとおり、Cubeはdestoryを持っていて、
MaterialObject3Dを解放する処理が記述されていると。ただこれは後述するけど
unregisterObject()っていうメソッドを呼んでるのであって、マテリアルの削除ではない。
CubeはMaterialObject3Dを複数個管理できるMaterialsListクラスでマテリアルを管理している。
Cubeのdestory()では、頂点やら面はほったらかし。

あ、そうだ、Planeでマテリアルにnullを指定した場合は自動的に
MaterialObject3D.DEFAULTが使われて、そこではWireframeMaterialクラスっていうマテリアルが
生成される。色はランダム。余談ね。

MaterialsListクラスは、マテリアル情報をDictionaryで管理してる。
マテリアルのインスタンスと、そこから生成した名前(文字列)の両方。
removeMaterial()でMaterialsListから指定したマテリアルを削除できるようだ。

でだ、cubeのdestory()は、マテリアルリストに含まれるマテリアルに対して
removeMaterial()は呼んでいなくて、unregisterObject()しているだけ。
これは、Cubeの生成時にマテリアルにCubeを登録( registerObject() )しているので
そこから消してる。つまり、描画はCubeではなくてマテリアルがやってるってことだろうかね。
Cubeのdestory()は、なんでremoveMaterial()しないのかは、ここら辺が関わっていて、
例えば、2個のCubeがある時に、それぞれのCubeが同じマテリアルを使っていると、
1つめのCubeの削除と同時にマテリアルの削除はしちゃダメってことになる。もう片方のCubeで
そのマテリアルが使えなくなるから。マテリアルとプリミティブは対等な関係じゃないので
それぞれ管理しないさいと。

ここまで来たら、あとはサンプルコードを書いて実践したいけど、もう眠いわ。
2009/03/21(土) 09:15:42ID:eC1+rvTO
>>50-55
詳細な内容ありがとうございます!
自分はこれまでライブラリのソースを見たのも殆ど無かったようなレベルの人間なので、
内容をまだまだ把握しきれずといった状態ですが、興味深く読ませて頂いております
自分がPlaneは消えたと言っていたのも、完全には消えてなかったのかもしれないですね;
書いて頂いた内容を把握できるようになりますよう、自分なりに基本からじっくり調べて行こうと思います
恐縮ですがまた時間がありましたら、続きやサンプルコードも宜しくお願いします
5744
垢版 |
2009/03/21(土) 10:06:09ID:fKmdslcf
>>41>>47について、
> プレビュー中は使用量のグラフがずっと上がりっぱなしの状態でした、
っていうのは、ずっとグラフが上がり続けるって感じ?
それとも上がったり下がったりを繰り返しつつも、徐々に最大値が上がっていく感じ?

手元の環境だと、Cube生成すらしてないSWFを作ってプレビューするだけでも
メモリ使用量が上がったり下がったりを繰り返しつつも、徐々に最大値が上がってくんだよね。

一応、こっちで>>41>>47をテストしてみたら、ずっと上がり続けるってことはなくて、
上がったり下がったりを繰り返しつつも、徐々に最大値が上がっていく感じでした。
2009/03/21(土) 12:01:02ID:eC1+rvTO
>>57
ColorMaterialを使用してPlaneで41の処理をやってみました、ただ41の削除方法はCube用で今回のtweenEndでは
public function tweenEnd( plane:DisplayObject3D ):void {
plane.material.destroy();
scene.removeChild( plane );
plane = null;
とやっています、あと
this.addEventListener( Event.ENTER_FRAME, ent );
public function ent(event:Event):void {
trace( SWFProfiler.currentMem );
}
を追加して見てみました
遅れましたが、使用しているpapervision3dは2_0_869です

数分放置してのtraceの結果は、開始7.12で、グラフが下がった瞬間の経過数値は
8.428・7.612・7.608、8.632・7.648・7.644、8.672・7.668・7.656、8.688・7.668・7.66 でした
ただ、flaファイルでフレームレートを30fpxにしていますが
SWFProfilerの表示ではCurrent Fps 12 Average Fps 17ぐらいになっていました、トゥイーンの動きはガクガクです
5944
垢版 |
2009/03/21(土) 12:02:14ID:fKmdslcf
あと、>>49
> var mat:MaterialObject3D;
> for each(mat in materials){
> trace("test2");
> mat.unregisterObject(this);
これは機能してないね。
materialsはDictionaryを持つクラスだけど、クラスに対してfor eachしても
Dictionary内のデータが取り出せるわけじゃないので。
かといってmaterialsはDictionaryのメンバ変数を返すような仕組みがないので
どうにもならない。なので自前で削除処理をするしかないかも。
ただ、Dictionaryで持ってる情報は使われなくなったらGCで勝手に削除されるらしいんで
あまり気にしなくてもいいのかも。

>6回ループが起こると思うんですが・・・

1つのマテリアルにallという名前をつけているのであって、6面分6個のマテリアルを
生成するわけではないですから、1回のループです。
1個のマテリアルに対して、front,back...と名前をつけて貼り付けた場合は6個になるんじゃないかな。
2009/03/21(土) 22:20:07ID:fKmdslcf
>>58
Plane1枚?でFPSが17って別の問題なような気がする・・・。

あとtrace()って遅いし、メモリ消費が増えるような気がする。
2009/03/22(日) 00:53:50ID:dxRIEIMT
>>60
またまた説明不足ですみません・・・
>>58でやっているのは、>>47の処理のCubeをPlaneに変えた処理で、一枚のPlaneでは無く
Planeを作ってトゥイーンさせ消しPlaneを作ってトゥイーンさせ消しというサイクルを繰り返していました
表示が遅くなった原因はズラズラとtrace結果が表示された事・・・だとも思うんですが

あと、FlatShadeMaterialを6面に設定したCubeの、トゥイーン後の消去用のfunction tweenEndで
var frontMaterial:MaterialObject3D = cube.materials.removeMaterialByName("front") as MaterialObject3D;
frontMaterial.destroy();
var backMaterial:MaterialObject3D = cube.materials.removeMaterialByName("back") as MaterialObject3D;
backMaterial.destroy();
-right・left・top・bottomのマテリアルにも上記同様処理-
この後に
cube.destroy();
trace( cube.materials, "-materials" );とした所
「 -materials」と表示され6面マテリアルは消えている?ようでした
しかし、trace( cube.material, "-material" );としてみた結果
「WireframeMaterial - color:15253353.379891736 alpha:1 -material」
と出ました、cube.material.destroy();をしてみても結果は変わりません
WireframeMaterialは生成・設定など全くやってはいないのですが、上記Planeの説明に書かれていた事と関係があるのでしょうか?
FlatShadeMaterialをColorMaterialにして動かしてみても結果は同じです
結局色々やってみましたが、このWireframeMaterialがどうしようも無く未だ解決できていませんorz
6244
垢版 |
2009/03/22(日) 11:00:50ID:PCij10Uc
最低限必要なだけのコードだけどCubeの生成と削除。削除はかなり手抜きだけど
これで10分ほど放置しても30fps。メモリは増減しつつ微妙に増えてるけど。

package {
import 略;

public class Main extends MovieClip {

public var viewport :Viewport3D;
public var scene :Scene3D;
public var camera :Camera3D;
public var renderer :BasicRenderEngine;

public function Main() {
SWFProfiler.init(stage, this);
init();
}
public function init():void {
init3D();
addEventListener( Event.ENTER_FRAME, loop );
var timer:Timer = new Timer( 600 );
timer.addEventListener( TimerEvent.TIMER, timerFunc );
timer.start();
}
public function timerFunc(e:TimerEvent):void {
var myCube:Cube = new Cube( new MaterialsList({all:new ColorMaterial(Math.random()*0x100)}), 20, 20, 20 );
myCube.x = Math.random()*200 - 100;
myCube.y = Math.random()*200 - 100;
myCube.z = Math.random()*200;
scene.addChild(myCube);
Tweener.addTween( myCube, { scale :2, time:2, onComplete:animEnd, onCompleteParams:[ myCube ] } );
}
6344
垢版 |
2009/03/22(日) 11:01:58ID:PCij10Uc
public function animEnd(cube:Cube):void {
scene.removeChild(cube);
cube = null;
}
public function init3D():void {
viewport = new Viewport3D(0, 0, true, true);
addChild( viewport );
renderer = new BasicRenderEngine();
scene = new Scene3D();
camera = new Camera3D();
camera = new Camera3D();
camera.zoom = 100;
renderer.renderScene(scene, camera, viewport);
}
public function loop(event:Event):void {
renderer.renderScene(scene, camera, viewport);
}
}
}

FPSはCPUパワーによるけど、この程度の処理なら30fps出ると思う。
2009/03/22(日) 15:30:02ID:dxRIEIMT
>>62-63
サンプルコードありがとうございます
試してみた所、自分の環境でもグラフが上下し、CurrentFpsやAverageFpsも安定していたようでした
マテリアルをColorMaterialからFlatShadeMaterialに変えたりしても問題ありませんでした、どうもありがとうございます!
詳細な処理の関係性はまだよくわかってませんが、結局cube.destroy()やcube.material.destroy()等といった処理は必要なかったんですね
普通のスプライトを削除する時のような、基本的な方法で消えるというのは目から鱗でした
具体的な処理を理解せず、ドキュメントを見てdestroy()があるからと、それでもうう解決したような気になっていた自分が安直過ぎました・・・
paperviison3dのソースについての理解はなかなか出来てない状態ですが、そっちの方も理解できるよう調べていった方がいいですね
色々ととても勉強になりました、どうもありがとうございました
6544
垢版 |
2009/03/22(日) 16:26:11ID:PCij10Uc
や、厳密にはCubeとMaterialは削除をしっかりしないとダメだと思いますよ。
でも削除しなくてもメモリが増えっぱなしとかFPSが低下していくようなことには
ならないという意味でのサンプルです。

厳密な削除方法は結局、よくわからないけどね。(てかAS3の削除処理は面倒すぐる)
2009/03/22(日) 17:12:19ID:dxRIEIMT
>>65
作るflashが、papervision3dで3D描画してで処理が終わる(3Dオブジェクトを消す必要の無い)flashbネらまだしも
それらの作った3Dオブジェクトを消して、その後も別の演出など続けていくflashの場合は気をつけた方がいいんでしょうね
flashのオープニングでCubeをぼこぼこ作って消してというのも、後々の動作に負担が残っていくという恐れも考えて考え直そうかと思ってます
67もこもこ
垢版 |
2009/04/24(金) 22:41:59ID:2HIFEIcY
var material:BitmapMaterial = new BitmapMaterial();
material.bitmap = ...;
var mesh:TriangleMesh3D = new TriangleMesh3D(material, new Array(), new Array(), null);
var vertexList:Array = mesh.geometry.vertices;
var faceList:Array = mesh.geometry.faces;
... vertexList に頂点リストを追加 ...
... faceList に頂点3つとマテリアルと UV座標3つ追加 ...
mesh.geometry.ready = true;

という感じで、独自にポリゴンを作ってみたのですが、テクスチャがうまく表示されません。
テクスチャ画像がポリゴンに「貼りついて」いるのではなく、
ポリゴンを移動するとテクスチャ画像が背景画像のように動かないんです。
どういう原因が考えられますか?
68Now_loading...774KB
垢版 |
2009/04/25(土) 21:40:59ID:3n28H4wZ
WinXP-Pro(SP2),FlashCS3(AS3.0)です。

昨日からPapervisionを使い始めた者です。Cubeの面にJPG(sky.jpg)を付けて回転させる
ムービーを作るため、
ttp://www.thinkit.co.jp/article/91/3/2.html
ttp://oshiete1.goo.ne.jp/qa4622897.html
を参考に製作しました。
※thinkitのサンプル自体ではエンジンが古いという理由でエラーになります。また、昨日DL
したバージョンは Papervision3D 2.0.0 (March 12th, 2009) です。

CS3でコンパイルしたところ、マテリアルによるCubeの生成部分
var material= new BitmapFileMaterial("sky.jpg");
material.smooth = true;
cube = new Cube(material, cubeSize, cubeSize, cubeSize, segment, segment);

で下記のエラーが出ます。

INFO: BitmapFileMaterial: Loading bitmap from sky.jpg
TypeError: Error #1034: 強制型変換に失敗しました。org.papervision3d.materials::BitmapFileMaterial@11ff0a1
を org.papervision3d.materials.utils.MaterialsList に変換できません。

「MaterialsListに変換すべき」と解釈しましたが、この方法が分かりません。
どう変更すべきでしょうか?
6968
垢版 |
2009/04/25(土) 22:06:53ID:3n28H4wZ
(自己レス)
解決しました。
MaterialsListで各面のJPGを指定すればOKでした。
70Now_loading...774KB
垢版 |
2009/04/27(月) 01:23:51ID:G21mapzz
OS:WinXP-Pro,Mem:3GB,FlashCS3-Pro(Player9.0,AS3.0)

MC内にPapervision3Dで生成した円柱(つまり入れ子)のStageに対する座標で質問です。

親となる灰色MCはステージ原点(0,0)に配置してあり、通常ならここに子のMCが出来るの
ですが、当方のASでは http://swfup.info/view.php/10676.swf のようにStage中央に出来ます。

円柱のASは灰色MCにクラス:MC_Cylinder_02でリンケージしてあるだけで、特にこの中に
座標を指定する記述はありません。
一応、ビューポート(Stageと同じ大きさ)の引数で細工を試みましたが上手くいきません。
var viewport:Viewport3D = new Viewport3D(600, 400);

親MCの座標と円柱の中心を一致させるにはどうしたら良いでしょうか?
2009/04/27(月) 08:02:18ID:uYVYhnVI
viewPortの座標(x,y)を大きさの半分だけ移動すればいいんじゃない?
2009/04/27(月) 17:12:34ID:nijeAG0B
>>71
どうも。
準備としてMC内の円柱のX座標(ローカル座標)を取得しようとしましたが、
取得出来ませんでした。

今回のASでは、var myCylinder:Cylinder = new Cylinder (); で生成した円柱を
3D空間sceneに scene.addChild (myCylinder); で付加しているのですが、
trace (myCylinder.x+", "+myCylinder.parent+", "+this.parent); をしても何も得られません。
(属性情報が得られません) なお、thisはsceneです。

myCylinder.xが得られない以上、動かすことが出来ない状態です。
どうしたら良いでしょうか?
7370
垢版 |
2009/04/29(水) 14:14:26ID:R/ejAGpn
すいません。
72をお願いします。
74Now_loading...774KB
垢版 |
2009/05/09(土) 19:23:21ID:hhXoFdx3
Papervision3D(2.0)をWin-XP(FlashCS3)で使っています。

「プロとして恥ずかしくないActionScript 3.0の大原則 CS3/CS4対応版」(MDN)のp068に
あるパノラマ3Dビューアー(本ではPV1.7仕様)を参考に円柱の中心にカメラがある状態を
再現したいのですがうまくいきません。

円柱の円周に空模様のJPGが貼り付けて、カメラの設定はコンストラクタで
camera.x = camera.y = camera.z = 0;//円柱の原点に設置
camera.focus = 0.5*cylinderW/Math.pow(2, 0.5);// 視野角を90度にして、フォーカス長を円柱半径の1/√2にした
camera.zoom=1;

としたところ、
http://uproda11.2ch-library.com/1761286Zd/11176128.jpg のように斜めの画像が出ました。
(目的の動作をすればJPGをアイマスクの様な形状で出る筈なのですが・・・)

この場合どうすべきでしょうか?
75Now_loading...774KB
垢版 |
2009/05/13(水) 16:15:47ID:ntK3i4sF
ビジネスソフトが多数あります
http://www.hhyyhh22.co.nr
2009/06/19(金) 23:48:16ID:QuJhaIyO
Papervision3D最近元気ないね
朽ち果てた?
2009/06/20(土) 01:11:51ID:ZmhOiM2+
以前ほどには話題になってないのは、結局、この程度の3Dグラフィックは
ずいぶん昔の技術だからね。Amigaとかの頃か?

あと出来る人は自分のBlogでやるようになったから、ぶっちゃけ、もうここみたいな
掲示板にみんなが集まってわいわいやるような機会が失われたんだと思う。良くも悪くもね。
78Now_loading...774KB
垢版 |
2009/06/20(土) 23:57:33ID:Ghm0/zr+
cs4使えよ…非浪費人よ
79Now_loading...774KB
垢版 |
2009/07/02(木) 10:22:10ID:nZvzgbjN
良く検証してないんだけど、moviematerialとassetmaterialって同じじゃね?
2009/07/02(木) 12:18:31ID:SUseTFtW
>>79
MovieAssetMaterialのこと?
81Now_loading...774KB
垢版 |
2009/07/06(月) 11:11:28ID:RSO087tv
>79ごめん間違えてた
2009/07/20(月) 18:48:53ID:cWddSN1M
もう更新なさそうだな
83Now_loading...774KB
垢版 |
2009/08/06(木) 19:52:20ID:ryej/EKX
なんだ、相方はもうとっくに脱いでるのか
84Now_loading...774KB
垢版 |
2009/08/06(木) 23:32:37ID:a+8bfnyE
3Dゲーマーのようなヘビーユーザーには大したインパクトがない。
ネットブック使ってるライトユーザーは重すぎて見る気も失せる。
openGL利用出来れば3DFlashもいいが今度はビデオカードの相性が出る。
まだ時期尚早なんじゃね?
2009/08/07(金) 01:04:51ID:mIaYfYXe
JavaScriptで3D描画するものをgoogleが開発してるからそっちに注目だな
2009/08/09(日) 14:41:42ID:GSuG8FRY
O3Dか
2009/08/10(月) 11:57:21ID:LDRuPOtH
5分程度のプリレンダムービーも一からモデリングして作るなら大変だ。
見栄えのいいリアルタイム3Dじゃ個人での開発無理かも試練。
88Now_loading...774KB
垢版 |
2009/09/02(水) 14:02:46ID:uOcHiIPm
あ、あぁデポジットね、あれ噛めば噛むほど味がでるよね。
2009/09/03(木) 21:12:11ID:Je/qeo1r
これってどうやってるかわかる人いますか?
ttp://www.kanfoo.jp/contents.php?cID=379
2009/09/07(月) 13:26:51ID:vRi9lKhX
モデリングソフトから出力したDAEファイルを読み込み
91Now_loading...774KB
垢版 |
2009/09/08(火) 12:48:24ID:qvNhE+Hu
impressやITMEDIAはスクエニに気を遣って記事に出来ないんだろ?
92ケンケン
垢版 |
2009/09/08(火) 17:42:01ID:csddhJov
ver2.0でMovieAssetMaterialでムービークリップをオブジェクトに貼付けたのですが、
ムービークリップ内でフレーム移動したいと思うのですが、可能ですか?
2009/09/08(火) 18:30:43ID:hOfqzUoP
可能。3つ目の引数をtrueにすればOK

MovieMaterialでインスタンスを割り当てれば
GogoAndPlayとかStopとかも制御できるよ
94ケンケン
垢版 |
2009/09/08(火) 19:31:46ID:csddhJov
Now_loading...774KBさんできるんですか!?
引数を3つ目をtrueにしてみていたんですが、ダメでした。
もし、サンプルなどあれば教えてください。
特にgotoAndPlayなどフレームアクションがきかなくて。
95ケンケン
垢版 |
2009/09/08(火) 19:42:16ID:csddhJov
追記で。
例えば、
割り当てたマテリアルのインスタンスに指示する場合、
どのように指示してあげれば良いんでしょうか。
96ケンケン
垢版 |
2009/09/08(火) 19:51:07ID:csddhJov
さらに、ボタンをクリックしたら、
マテリアル内の14フレームに飛ぶという事は
可能だったりするのでしょうか。
2009/09/08(火) 20:35:21ID:qvNhE+Hu
>>95-96
そのマテリアルのMCに対してgotoAndPlay()すればいい。
98ケンケン
垢版 |
2009/09/09(水) 00:12:04ID:RUKHMBuu
やっぱり出来ませんでした。
http://blog.r3c7.net/?p=176
など見つけてみましたが。

そのマテリアルをどのようにすれば操作が出来るのですか?
マテリアルの指定は以下のようにしています。
slidBraid=[{id:"MClip1",x:0,y:0,z:0}]
tempObj2=slidBraid[0];
var braidName:String=tempObj2.id;
var material2:MovieAssetMaterial=new MovieAssetMaterial(braidName,true,true,true);

配列で制御していて、オブジェクトのidに名前を代入しています。
どのようにして制御すればよろしいでしょうか?
99ケンケン
垢版 |
2009/09/09(水) 00:30:24ID:RUKHMBuu
出来ました!

情報共有のために以下のようにすれば出来るようです。
http://www.brooklyn.jp/blog/actionscript/moviematerial-of-pv3d.html

ありがとうございました。
10093
垢版 |
2009/09/10(木) 09:48:05ID:cukeixJ3
そそ。
MovieAssetMaterialだとString指定だけど
MovieMaterialはMovieClip指定だからタイムライン制御が簡単にできる。

MovieAssetMaterialでもなんかのプロパティで制御できた気もするけど。
2009/09/25(金) 07:19:34ID:gstRuV5I
http://clbitz.co.jp
これPV3Dかなぁ〜?
テクスチャーに貼っ付けたムービークリップがマウスイベント拾ってるみたいなんだけど
こんなコトできんの?
102Now_loading...774KB
垢版 |
2009/10/08(木) 23:47:28ID:894Ba92V
ソフトウェアレンダリングマニアとしてはPV3D好きなんだけど実用性を
考えるとハードウェアレンダリングをベンダーとかMicrosoftなんかと
強調してやってくれないと行き詰るのは見えてますよね?
Silverlightと競っている手前できないという事情がありそうですが、
メニーコアCPUがもっと進化した場合、そこそこのスピードとクオリティで
動かせるようにはなるかもしれませんがやはりハードウェアアクセラレーシ
ョンがさらに先を行くという形は避けられないでしょう。
Adobeがインフラから整えるべき課題だと考えます。まぁ割り切って使いどころ
を工夫すれば面白いものは作れると思いますので個人的には結局使います。
103Now_loading...774KB
垢版 |
2009/10/13(火) 20:43:34ID:NXjAS19L
Cubeの側面に文字を貼り付けたいのですが
文字を画像にしてSpriteに貼り付け、MovieMaterialを使いsmoothを適用してやってみると、
文字画像が元サイズより大きくなるとピンボケのような状態になってしまいますが
これはどうしようもないのでしょうか、カメラの位置や元画像を大きくしたりして
見える大きさを調節する等しか方法は無いのでしょうか?

org.papervision3d.typography.Text3Dを試してもみましたが、これをSpriteに貼り付けたり
マテリアルに組み込むといった方法も見当たらないので断念しました

何か適切な方法がありましたらご教授下さい、お願いします
使用しているのはActionscript3.0、papervision3d 2.0.869です
104Now_loading...774KB
垢版 |
2009/10/15(木) 21:28:57ID:DvsKenOC
http://niyaniya.info/pic/img/6137.jpg

(画像の文のrotationXはrotationYの間違いです、すみません。)
この画像のBのような、Plane(灰色の四角形)の端を軸としたrotationYの回転を実現したいのですが、
どのように実装すれば良いでしょうか?
105Now_loading...774KB
垢版 |
2009/12/17(木) 18:30:33ID:gu2Jbzpu
compositematerialでテクスチャ合成したいんですが、
150×150のテクスチャに、50×50のテクスチャを合成すると、
150にあわせて伸びきってしまう・・・。
単純に元サイズのまま合成することはできない?
2010/01/16(土) 17:28:07ID:6L39mhjl
http://f-site.org/articles/2007/05/07170852.html
を作ってみたくて使っている関数をそれぞれ現在のものに書き換えて挑戦しています。
(MovieScene3D →Scene3Dにしたり、インポートの参照源を直したりなど)

進めていくうちに
Plane() の引数の数が一致していません。0 が必要ですが、6 が指定されました。
と出力画面で怒られたのですが、どうすればいいのでしょうか?
現在のpv3dではこういった記述の仕方はゆるされず、根本的な書き直しが必要なのでしょうか?
2010/01/16(土) 20:38:02ID:3EniREqO
>>106
ttp://www.papervision3d.org/docs/as3/org/papervision3d/objects/Plane.html

ttp://papervision3d.googlecode.com/svn/trunk/as3/trunk/docs/org/papervision3d/objects/primitives/Plane.html

APIドキュメントを見て意味が分かるようにならないとコピー以上のものは作れないから頑張れ。
2010/01/17(日) 09:23:33ID:MMWe1EOU
>>107
ありがとうございます!
そんな風にして調べていくんですね!ものすごい参考になりましたmm

そのあともエラーは続きますがなんかがんばれそうな気がしてきました!
109Now_loading...774KB
垢版 |
2010/06/10(木) 15:28:54ID:mokVYFeB
http://www.xknowledge.co.jp/fordevelopers/papervision3d/
Flash3Dコンテンツ制作のための Papervision3D

上記の本で勉強中なのですが、062ページのサンプルコードが、
ファイル名[PPSample.as]で、クラス名[PaperPlaneSample]となっています。
実際にそのままコーディングしたところエラーで実行できず、
ファイル名をクラス名と同じに変えたところ、実行できました。
ActionScriptではファイル名とクラス名が一致していないといけないのですよね?
これは本の誤植でしょうか?
110Now_loading...774KB
垢版 |
2010/07/27(火) 14:50:27ID:scgz6zFV
QuadrantRenderEngineとFrustumClippingが同時に設定できないのはどうすればいいんだ
http://blog.r3c7.net/?p=503
ここに書いてあることをやってみたが、フリーズはしなくなったものの、描画が欠けるのはなおらない
111Now_loading...774KB
垢版 |
2010/08/09(月) 21:49:52ID:1ggStfP7
DAEクラスとColladaクラスの違いって何なのですか?
自分が作っているプログラムにはどちらが適切なのか、どう判断すればいいんでしょうか。
今のところ私が把握しているのは
・DAEクラスだとコンストラクタのあとでload()メソッドでファイルを読むが、Colladaクラスだとコンストラクタでファイルを読める
・Colladaクラスはコンストラクタやload()メソッドでオブジェクトの拡大率を指定できる
というだけです。

http://papervision3d-jp.googlecode.com/svn/trunk/docs/index.html
Papervision3D日本語リファレンスです。
Colladaクラス・DAEクラスのページを表示し、[Show Inherited Public Properties]などをクリックすると全プロパティ/メソッドが表示されます。
両者を比較すると、DAEクラスにはアニメーションにかかわるらしい play() / pause() といったものが見受けられるので、
とりあえず『アニメーション情報を含むColladaファイルはDAEクラスの方が適している』のかな? と思うんですが……。
112Now_loading...774KB
垢版 |
2010/11/15(月) 22:47:35ID:8p1f6X5y
読み込んだメッシュの合計頂点数調べるメソッドって無いんだっけ?
113Now_loading...774KB
垢版 |
2010/11/20(土) 13:00:11ID:7/8h0ijI
素朴な疑問
startRendering() って何のクラスのメソッドなん?
Papervision3D日本語リファレンスのインデックスに載ってないってどゆ事?
2010/11/21(日) 16:43:36ID:xdJDIK0u
わかった! インターフェイスメソッドだったのか…
2010/11/28(日) 22:55:55ID:ruSohoPM
2年ぶりにこのスレ来たが相変わらず過疎ってんな。
FLASHも斜陽になったもんだ。
ハードウエアアクセラレータに対応しない限り3Dは厳しいなと。
2010/12/01(水) 12:24:11ID:pmEoKZBQ
たしか、もうじき対応するハズ。
117Now_loading...774KB
垢版 |
2010/12/06(月) 19:06:55ID:fQKejhKY
もうじきっていつくらい?
でも昔のショックウェーブみたいにプレイヤーが重くなったらみんな離れる気がする…
2010/12/07(火) 17:05:23ID:fyycB3nx
PaperVision3Dに関する質問はこちらでしても大丈夫でしょうか?

FlashのCS3とPaperVision3D2.1を使って色々試しています
MAYAから出力したCOLLADA(.DAEファイル)モデルの上を歩く、ウォークスルー的な物を作ろうと考えており、
自キャラクター (現状ではプリミティブのCube) と地形との接触を「hitTestObject()」を使って調べています。

そこで問題が発生しているのですが、.DAEファイルに対してhitTestObject()を使用しても、
レンダリングされた絵と、実際に衝突検知される位置が全く違ってしまっていて (実際のモデルより遥かに小さいようです) 使い物になりません。
これは、hitTestObject()やシーンにaddChildする時の使い方が悪いのでしょうか?
それとも用意したDAEファイルに問題が有るのでしょうか?

どなたか心当たりのある方が居ましたらアドバイスをお願いします。
2010/12/07(火) 18:27:25ID:VtZ8+hLu
>実際に衝突検知される位置が全く違ってしまっていて
ローカルやグローバル座標の違いで狂ってるぽい印象をうけたけどその辺はどうなの?
2010/12/07(火) 19:27:22ID:fyycB3nx
>>119
レスありがとうございます。

MAYA上での座標系や親子関係の影響ですね?
リセットしてから出力してもらっているので問題は無いはずですが、一応確認してもらいます。
(データの出力は別人&基本映像屋なのでそのあたり無頓着だったりします)
ただ、一番分からないのは「実際に表示されているDAEモデル」をそのまま衝突判定に使っていて、
見た目は正しい大きさなのに判定が合わない事になっている所です。

ちなみにFlash上では全て同じDisplayObject3Dの子供になっていて、scaleなどの調整や座標の変更は行っていません。
2010/12/11(土) 02:36:47ID:gu46GKDW
不具合は直ったかい?
2010/12/13(月) 10:10:02ID:6RN9fHD4
すみません、あれから別件で忙しくなってほとんど触れてません&規制で書き込めませんでした
2011/01/01(土) 21:40:43ID:KD/pwRBS
今年もがんばろう
124Now_loading...774KB
垢版 |
2011/01/13(木) 13:06:05ID:oI47gs33
質問でつ! FlashCS3 AS3
海外の3D物理ライブラリでサンプルを実行しようとしたら シンタックスエラーが出て
↓こんな記述がでてきました これは< >何なんだろうw こんなの初めて見た

private var _bodiesToBeActivatedOnMovement:Vector.<RigidBody>;

Vector.<RigidBody> という型は出てきません Vector3Dしか無いです
2011/01/13(木) 21:41:09ID:BGR3eD5C
>>124
Flash 10 (CS4) 以降 + AS3 で、Vector 型という Array に格納できる型を制限できるクラスが追加されて、
それは Vector.<型> という書き方をする。 (他の言語だとジェネリクスとかテンプレートって言われている奴。)
Flash 9 (CS3) + AS3 では Vector 型は使えないから 9(CS3) 用のを使う。

無ければ、Vector.<...> を Array にすべて置き換えれば大抵は大丈夫。
new Vector.<...>(length:int, fixed:Boolean) も大抵の場合は fiexed を省略して new Array(length:int) とすればいい。
ちなみに Vector.fixed っていうプロパティは配列長を固定するかの指定。
それを使った判定とかが出たら適当に Boolean の変数を用意して疑似的に処理すればおk。
2011/01/14(金) 11:15:04ID:IIsrwYRY
なるほど!
127Now_loading...774KB
垢版 |
2011/01/20(木) 19:14:11ID:Int/vVj3
PaperVision3Dで、onClipEvent(load)と同じ働きをするスクリプトってありますか?
2011/01/21(金) 04:01:29ID:QM+EueD1
そういうAS1的なメソッドは無かったと思う 調べてないから確信は無いが…
オブジェクトの初期設定を行うメソッドを作って 
オブジェクトを表示リストに入れる時に実行すりゃいいんだお
129Now_loading...774KB
垢版 |
2011/01/21(金) 09:59:43ID:L0ND/G9O
ありがとうございます!
2011/03/05(土) 13:51:14.83ID:LXJJWs8D
いまDAEclassを使って、colladaのモーション付きファイルを再生しようと試みています。このときテクスチャアニメをできないかと考えているのですが、何か方法はありますでしょうか。リファレンスを見ても無さそうではあるのですが。
PV3D2.1、AS3です。
2011/03/06(日) 15:04:26.02ID:3T5lPFea
ウチもcollada読み込んで色々実験してるがさっぱりだな
幸いcolladaはXML形式だからモーションの要素(や属性)だけを抜き出して何とか出来そうだよね
何かわかったらまた報告してくれないかw ウチの方でも新発見があったらカキコするっす
2011/04/30(土) 04:31:52.79ID:c7OLI+5y
papervision3d糸冬了の噂
2011/04/30(土) 14:15:36.34ID:QjaT1wxQ
噂って言うか、主要な開発者抜けたときに既に終わっていた。
2011/04/30(土) 19:48:12.98ID:H944h0IY
Flashの次バージョンから3Dエンジン実装されるからやる気無くなった
というより意味が無くなったからかな?
135Now_loading...774KB
垢版 |
2011/05/02(月) 12:22:59.24ID:0H042mGw
そろそろAway 3Dに移行しろって云うことじゃないの?
collada読み込みも、PV3Dより良いし
136Now_loading...774KB
垢版 |
2011/05/03(火) 01:44:06.29ID:DYXwIHuW
MAYA2011からPAPERVISION3Dにcolladaでモデルは持っていけるんだが
テクスチャが持って行けない・・・。
フラッシュで作った球体には貼れたのにMAYAのモデルには貼れない。
何ででしょう。誰か助けて。
2011/05/03(火) 13:45:12.01ID:BfdFa2BN
>>136
daeファイルをテキストエディターで開いてテクスチャのパスを確認
138Now_loading...774KB
垢版 |
2011/05/05(木) 16:10:23.69ID:4IppW0KE
unity一択
139Now_loading...774KB
垢版 |
2011/05/05(木) 19:54:37.34ID:4IppW0KE
>>136
メタセコで作った場合は、
1. テクスチャパスの相対参照化
2. materialの名前を正常化
例: mat01が本来の名前だったとするとmat01「SG」とか余計な文字列を付けるので置換
の2点だよね、maya使ったことないから知らないけど、
ググれば色々出てくるんでね?
140Now_loading...774KB
垢版 |
2011/05/16(月) 00:40:21.94ID:SBwUkxut
Flash11でMolehillが出てハードウェアレンダリングが標準になっても、
Roxikはソフトウェアレンダリングだけでもうまくやって行けそうです。
141Now_loading...774KB
垢版 |
2011/05/27(金) 20:05:44.94ID:XV/Yvf9U
こんなスレあったのか
現在のグローバル座標ってとれないの??
142Now_loading...774KB
垢版 |
2011/05/31(火) 21:55:49.16ID:NE08FeAR
planeにアニメーション付のMCをはっつけると
画像が変わる度に点滅してしまうんだけど、
どうすれば回避できる?
2011/10/06(木) 23:55:12.47ID:il29/ZO1

Papervision で作ったカバーフローで、
空中に浮かんだ立体が、床に映りこんでいるようなものが
ありますか。

または、鏡面表示を実現するよいサンプルがあるでしょうか。

よろしくお願いします。
2011/10/07(金) 13:14:34.62ID:f4HY6MDF
>>143
縦方向に反転したポリゴンを配置してソレっぽく色調整すれば?
2011/11/02(水) 19:10:45.64ID:ifoSfMhu
最新のBlender2.6aを使ってモデリングしたものを
Papervision3Dで動かそうとしています。mappingすると
とたんに重くなるんですが、2.6aだとうまくデータがはけないのでしょうか?
簡単な飛行機を円状に飛ばしているのですが、一応動作はしています。
気になったのは、webで拾ってきたものは、wireframeが三角形なのに対して
自分のは、四角形で..blendaの古いのでは、出力時にtraiangleを選べるらしく
最新のだとできるのかできないのか分からないです。というかそれが原因なのかも..?
なにか情報がありましたらお願いします。
146Now_loading...774KB
垢版 |
2011/11/02(水) 19:34:27.58ID:ZV3JuPXj
>>145
alternativa3DとかAway3D使ってみれば?
FlashPlayer11とGPU使えるから軽くなると思う

データを読み込めるかは知らないけど、
少なくともPapervision3Dよりはレンダリングは早い
2011/11/02(水) 19:51:36.41ID:ifoSfMhu
>>146
そうですねPV3Dも今さら感はあったのですが、
3Dのとっかかりとしてやってみた感じです。
これから何が主流になるかは、分からないですが、
いろいろ触ってみようと思います。
2011/11/03(木) 02:24:03.07ID:e/m0gNtQ
alternative3Dやってみたんですが、サクサクでした。
CPUメーターがほとんど動かないのはGPUのおかげなんでしょうけど
すごいですね
2011/11/13(日) 16:08:11.18ID:t/VdzRNW

PaperVision3D のRefrectionView で鏡面処理をして困っています。

PaperVisionの画面を、アプリ画面の一部分として埋め込みたいのです。
画面の下方向に伸びた鏡面処理の影を、ある長さで切りたいのですが、RefrectionViewの
コンストラクターで指定した長さで切れないようです。

PaperVisonの上に別のFlashのオブジェクトを被せて隠すか、あるいはPaperVisionの部分を別のswfに
して貼り付けるしか方法がないのでしょうか。

もっとうまい方法があればお教えください。よろしくお願いします。

150149
垢版 |
2011/11/13(日) 21:31:40.47ID:t/VdzRNW
自己解決しました。
どうもありがとうございます。
2013/08/04(日) NY:AN:NY.ANID:Y+anbBwG?PLT(12080)
使ったことない
152Now_loading...774KB
垢版 |
2019/01/21(月) 17:51:55.92ID:Gvy1GwkL
age
2023/04/26(水) 10:31:05.60ID:KRw5gLTZ
プハァー ~~-v( =´o`=) 。o 〇 ○
2023/09/30(土) 06:40:42.56ID:jBLD9Cp8
価値を見出せない
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況