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

1Now_loading...774KB
垢版 |
2008/11/23(日) 19:00:56ID:C8LYNbVA
Flashの3DクラスライブラリのPapervision3D 2.0 GreateWhiteについて
情報交換しましょう。

いくつかの3Dライブラリがその覇を競い合っていますが、
あえてPapervision3Dを選択しているもの同士、語り合おうじゃ
ありませんか。

2008/11/23(日) 20:17:24ID:r1SGDpLs
2
3Now_loading...774KB
垢版 |
2008/11/23(日) 20:25:40ID:G9Mpep5D
プロのアニメーターがゴロゴロいるフラ板では当然手書き派多数だよな
4Now_loading...774KB
垢版 |
2008/11/23(日) 22:52:52ID:bKhwYZCL
2.0 は betaのアーカイブが配布されてますし、
情報源が多いですからお勧めだと思います。
2008/11/27(木) 01:16:48ID:7njKJd4O
あえてPV3Dっていうか、本命じゃねーのかい
6Now_loading...774KB
垢版 |
2008/11/27(木) 12:21:43ID:Hb7TnPA5
planeのwidthを取得する方法がわからんです。
2008/11/27(木) 20:16:44ID:7njKJd4O
インスタンス化時にコンストラクタで渡してるだろうが
2008/12/02(火) 20:45:39ID:8KyMtJIK
最近、Papervision3Dを知ったんですがどのソースを使ったらいいのか分からない

http://svn1.cvsdude.com/osflash/papervision3d/as3/trunk/
http://papervision3d.googlecode.com/svn/trunk/as3/trunk/

この二つのリポジトリで内容が違ってるようですが…

またGoogle Codeで公開されているPapervision3D_2.0_beta_1_src.zipなんてのもありますが
http://code.google.com/p/papervision3d/downloads/list

どれを使えばいいんでしょうか…
2008/12/02(火) 21:55:34ID:d0iG3g57
一番下のやつ
2008/12/03(水) 07:04:53ID:sY+O2vMp
SVNで
http://papervision3d.googlecode.com/svn/
を設定&ダウンロードで最新版。

h ttp://www.bushclover-field.jp/papervision01/
ココとか参考にどうぞ。

しかし、3Dはムズイのう。。。
簡単なオブジェクトでもテクスチャひとつで、クオリティがまったく
変わってくるので、その辺の技術も上げねば・・。
Flash以前の問題だな。
 
2008/12/05(金) 11:03:21ID:gGsVcDvN
FP10用のPV3D使ってみた奴いるか
2008/12/05(金) 18:55:10ID:Rm4ERfkl
>>10
どうもです。

>>11
FP10用って?kwsk
2008/12/05(金) 21:58:56ID:ZA7CQTbP
astroエンジンってことじゃないかなぁ。

速度上がるのかどうなのか
2008/12/06(土) 09:59:04ID:xXLIN8Ur
GoogleAnalysticレポートでFlashPlayer10のユーザが
90%くらい行ってから検討だな

いままだ週間レポでも58%

CS4でたら増えてくるんだろうな
15Now_loading...774KB
垢版 |
2008/12/11(木) 17:45:25ID:uHEfl8yM
最新のpapervisionのHelloworldが見つからん…。
2008/12/12(金) 10:49:29ID:rkvw+Tx9
CS4ってDisplayObjectにプロパティzを持ってるけど、
PV3Dもそれように再設計されたの?
2008/12/19(金) 02:18:17ID:UN4/Mqss
h ttp://electone.jp/product/stagea/internet/nmt/index.php

これはpapervisionですか?
これくらいだったら、簡単に作れるんですか?
  
2008/12/21(日) 09:52:28ID:VaaM9Z4D
>>17
ぽいね。
簡単かどうかは、その人のスキルによる。
モデリングや、数学的知識は当然必要だが、これがPVでできるかわからん
ようでは厳しいと思うぞ。
2008/12/24(水) 10:11:13ID:2A3eSOS8
>>16
DisplayObjectのzプロパティ等を使用して3D処理行うと
DisplayObject内に定義されているその他の3Dには関係ないプロパティやメソッドの分
パフォーマンスが落ちそうな気もするね
2008/12/25(木) 07:13:25ID:22aRcKQa
3軸のための行列計算をしなくてすむなら、
パフォーマンス上がる気がするけどな。

CORRECT_Z_FILTER指定しないと多数のDAEファイルの
重なりがまともに出来ないけど、指定するとガクッと
パフォーマンスが落ちてしまう。

そのへんとかもzプロパティが使えれば、パフォーマンス
落とさずに出来るようなるかもしれん。

Roxikなみのパフォーマンスが出るようにしてくれればなぁ、
仕事で使うには、まだまだシンプルな事しか出来ん。
すげぇ他力本願だけど。
 
2009/01/31(土) 23:48:06ID:AWs6FmF7
http://www.google.co.jp/search?hl=ja&q=paperVison3D

paperVison3Dは有害らしいw
2009/01/31(土) 23:49:45ID:AWs6FmF7
と思ったら検索結果全部か
23sam
垢版 |
2009/02/20(金) 12:39:46ID:PkhEAH4Y
最新版のpaperVison3Dをクラスパスに通したあとで
3Dflaサンプルを落としてコンパイルしたところ
Vertex3Dへの参照があいまいです。とか
.asがありませんとなる原因は何が考えられますでしょうか?
2009/02/20(金) 12:57:04ID:n0EDCyUp
3Dflaサンプルってどこのヤツ?paperVisonのサイトの?
25sam
垢版 |
2009/02/20(金) 13:00:39ID:PkhEAH4Y
http://www.thinkit.co.jp/article/91/3/2.html
ここなんですが、、、
基本的な使い方なのに情けない。
クラスパスは通ってるみたい、
バージョンの問題ですかね、、、
2009/02/20(金) 14:07:48ID:n0EDCyUp
>>25
それは記事が古くて、今のPaperVisionのライブラリの
使い方とあわないからです。
PaperVisonの事を書いてる日本語Blogの大半は
古いPaperVisonのライブラリの頃のものなので、
サンプルもほとんど動きません。みんな飽きっぽいのな。

Googleとかで検索するから、PaperVison3d 2.0 をキーワードに
した方がいいです。
27sam
垢版 |
2009/02/20(金) 20:46:23ID:PkhEAH4Y
ほんとうにありがとうございます。
こんなに親切に答えてもらって、、
たすかりました。
PaperVison3d 2.0 をキーワードに調べてみますね!
28Now_loading...774KB
垢版 |
2009/02/27(金) 19:14:25ID:EvETe5ag
Papervision3D_2.0.869を使用しています

papervision3dの基本的?なオブジェクト
var viewport:Viewport3D;
var scene:Scene3D;
var camera:Camera3D;
var renderer:BasicRenderEngine;
これらをちゃんと削除する方法はどうすれば良いのでしょうか?

viewportとrendererはdestroy()関数があったので実行し
sceneとcameraには=nullとしていますが、その後もなんだか軽くなったという実感がありません
確実な削除方法はどのようにすればよいのでしょうか、どうかお願いします
2009/02/28(土) 13:01:54ID:JngG2oN+
オレはprimitiveなオブジェクトをちゃんとremoveChildする方法を知りたい。
getChild()が変だし、なんか残骸が残るんだよな。
2009/03/01(日) 22:00:34ID:XQobTzkD
http://game.belcro.net/game.datas/F_Mega/game.html
http://phenotype.jpn.org/blog/wp-content/uploads/ftp/racing21/index.html

すごいなー
もうこんな作品作ってる人がいるとは〜
2009/03/01(日) 22:38:55ID:wrUSrNmq
>>29
因みに残骸が残ってるかどうかを調べる方法ってどうするんでしょうか・・・
plane.marerial.destroy()として
trace(plane.marerial)をしても普通に指定したmaterialが表示されたりで
これも完全には消えてないって事なんでしょうかね
3229
垢版 |
2009/03/01(日) 22:55:27ID:1tXrW9E3
>>31
すみません、destroy()までしてませんでした、が、removeChild()してるのに
画面にCubeとかPlaneが残る場合があるんですよ。
removeChild()だけじゃメモリから消えないとしても、viewから消えないっていう
のはなんか変で。

Primitiveを自分で管理すればいいんでしょうが、viewで管理してる
同じ情報を持つっていうのもなんかもったいない話で。
2009/03/01(日) 23:55:11ID:wrUSrNmq
>>32
お答え頂きありがとうございます
自分も他人のソースを元に手探りでやっている身でなんとも答えられず申し訳ないです
使用上、作ったPV3Dオブジェクトを作って消してを繰り返し行うので
しっかりとした使用後の削除方法を習得したいんですけどね・・・
34もこ
垢版 |
2009/03/08(日) 19:43:45ID:Ex6CNv5b
PaperVision3D 2.0 を使っています。
3D を表示する画面の背景に、
特定のビットマップを表示することはできますか?
いろいろ調べたのですが、わからなくて。。。
2009/03/08(日) 20:41:56ID:OY1MrocS
そこは普通にFLASHっぽいことをするだけ。
FLASHだったらタイムラインに画像を置くとか。FLEX?とかなら画像を読み込んでaddChild()すればおk。
2009/03/15(日) 13:51:40ID:hql46o8u
PaperVision3D 2.0のいい勉強方法はありますでしょうか。あまりサンプルなどが見つからず困っております。
2009/03/15(日) 13:53:31ID:DSoVRocV
>>36
3Dについて、どれだけ基礎知識があるかによるなぁ
2009/03/15(日) 14:35:55ID:hql46o8u
論理座標系とデバイス座標系、頂点とレンダリング、といった基本的なことくらいしかわかっておりません。
1.7のサンプルは出回っているので、1.7と2.0の変更点などまとまっているものでもあれば少しは学習できますでしょうか。。。
2009/03/15(日) 15:25:23ID:DSoVRocV
オレがPaperVison使い始めた頃にあれこれ情報探したけど、
1.7->2.0移行ガイドみたいな情報はみたことないかな。
少なくとも日本語のサイトでは。
てか、かなり変わってるから、もう1.7の事は忘れた方がいい。

まず、Googleで
PaperVision 3D 2.0
で検索してBlogとかからサンプルソースを
コピペ実行出来るようになるっていうのが第一段階。
サンプルもFLEXとFLASHで違うとかあるんで注意。

そしたら、一行ずつ、サンプルソースが何をやってるのか読み解く。
そこまでいったら、あとは、PaperVisonのDocs/index.htmlをざっとみて
どういうメソッドがあるのか把握する。
この辺、3Dに関する基礎知識がないとどうにもならないんで、そういうのは
DirectXとかの3Dプログラミング本の基礎の部分とかを参考に。

これで大体、やりたい事を実現する方法が見えてくる。
見えてこない場合は、基礎知識不足だと思う。数学とか3Dとかプログラミングの。
2009/03/15(日) 15:30:59ID:hql46o8u
>>39
ありがとうございます!
1.7のことは忘れて、2.0のサンプルから解析していこうかと思います。
41Now_loading...774KB
垢版 |
2009/03/18(水) 22:05:47ID:60IhFvSD
Cubeを綺麗に消去するにはどうすればいいのでしょうか・・・
Cubeを作る→トゥイーン→消す処理を繰り返す処理をしたいのですが、使用メモリを調べているとずっと増え続け、動作もどんどん重くなります
実際に使用したいマテリアルはFlatShadeMaterialなのですが、やはり重くなり、テストでColorMaterialでやってみていますが症状は変わりません

マテリアルセット
var material:ColorMaterial = new ColorMaterial( 0x00FF00 );
var materialsList:MaterialsList = new MaterialsList( { all:material } );
var cube:Cube = new Cube( materialsList, 300, 300, 300, 1, 1, 1 );
scene.addChild( cube );

トゥイーン後Cubeを削除
Tweener.addTween( cube, { z:-500, time:2, onComplete:tweenEnd, onCompleteParams:[ cube ] } );
public function tweenEnd( cube:DisplayObject3D ):void {
var materialsList:MaterialsList = cube.materials as MaterialsList;
var allMaterial:MaterialObject3D = materialsList.removeMaterialByName("all") as MaterialObject3D;
allMaterial.destroy();
cube.material.destroy();
scene.removeChild( cube );
cube = null;
}
因みにエラーは発生していません、訂正が必要な箇所があればどうかご指摘下さい、お願い致します。
2009/03/19(木) 00:40:06ID:4npumRp1
Cubeを作るたびにメモリ使用量が増えてんの?
4341
垢版 |
2009/03/19(木) 09:11:40ID:o2U5xvy9
>>42
返信ありがとうございます
SWFProfilerというのを使って、グラフ状でメモリの使用状況を見ながら、>>41のCube作成→トゥイーン→消去を繰り返させているのですが
プレビュー中は使用量のグラフがずっと上がりっぱなしの状態でした、使用メモリ値は最後に見た時には15MBなどと出ていました
試しに同じ作業をPlaneでやってみた所、FlatShadeMaterialでもColorMaterialでもグラフは上下し、プレビュー中の使用メモリ値は7MB-9MBの間で動き続けました
なので原因は、MaterialsListの消し方が問題なのかなと思い色々と試しているのですが、使用メモリが下がる事が無いんです・・・
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()って遅いし、メモリ消費が増えるような気がする。
レスを投稿する

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

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