- 締切済み
pv3Dについて教えてください
【環境】 FlashCS4 pv3D 2.0 アニメーションを作りたいと思い、数日前か勉強し始めました。 今まで全くプログラミングの勉強をしたことがないのと、サイト などに落ちているソースを見てもpv3Dのverが違うのかコンパイル エラーで思うように動いてくれません。 作りたいアニメは、 ・x,y,z軸 ・軸のプラス方向に矢印がついており、更にその先にx,y,zの文字 ・x,y,z軸それぞれプラスの値の適当な位置にy軸方向に長い 直方体を配置 ・直方体の側面にそれぞれ矢印が向いている ・軸、直方体を含め、マウスドラッグでy軸もしくは直方体を 中心に回転 という動きを実現したいのですが。。。 思い描いている動きとしては http://clockmaker.jp/blog/2009/05/papervision3d_tutorial_5/ にあるDemo (step3)が一番近いのですが、どうしても上手く いきません。 ※自分はフレームアクションではなく、asファイルで作成しています。 参考サイトやソースがわかる方いらっしゃいましたらぜひ教えて 下さい。よろしくお願いします。
- yoshino08
- お礼率62% (5/8)
- Flash
- 回答数4
- ありがとう数9
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- H240S18B73
- ベストアンサー率65% (190/288)
#3です、続きです for(var i=0;i<3;i++){ cubeList.push(new Cube(mtrList,30,30,100)) cubeList[i][["x","y","z"][i]]=200 vw.scene.addChild(cubeList[i]) vecList.push(new DisplayObject3D()) var cone=new Cone(mtr,10,30) var bar=new Cylinder(mtr,3,100) cone.y=100 bar.y=50 vecList[i].addChild(cone) vecList[i].addChild(bar) vecList[i][["rotationX","rotationY","rotationZ"][i]]=90 if(i==2)vecList[i].rotationZ=-90 vw.scene.addChild(vecList[i]) var movMtr=new MovieMaterial(makeTxtMov(["X","Y","Z"][i]),true,false,true) movMtr.oneSide=false txtList.push(new Plane(movMtr,50,50)) txtList[i][["x","y","z"][i]]=300 vw.scene.addChild(txtList[i]) } function makeTxtMov(str:String):MovieClip{ var rtn=new MovieClip() var fld=new TextField() var fmt=new TextFormat fmt.size=100 fmt.color=0x339955 fld.defaultTextFormat=fmt fld.text=str rtn.addChild(fld) return rtn } light.y=light.x=light.z=500 vw.camera.y=400 vw.startRendering() addChild(vw) addEventListener(Event.ENTER_FRAME,frameTick) function frameTick(e){ drc+=rot rot*=0.98 for each(var txt in txtList)txt.rotationY=-drc*180/Math.PI-90 vw.camera.x=light.x=Math.cos(drc)*dst vw.camera.z=light.z=Math.sin(drc)*dst } stage.addEventListener(MouseEvent.MOUSE_DOWN,function(e){prevX=mouseX;stage.addEventListener(Event.ENTER_FRAME,setRot)}) stage.addEventListener(MouseEvent.MOUSE_UP,function(e){stage.removeEventListener(Event.ENTER_FRAME,setRot)}) function setRot(e){ rot=(prevX-mouseX)/300 prevX=mouseX } 最近VectorShape3Dっていう使えそうなクラスが追加されたのに なぜかレンダリングの段階でエラーが出て使えなかった・・・
- H240S18B73
- ベストアンサー率65% (190/288)
つねに最新のものを使って公式のdocumentationを 確認するのが一番かなとも思います GreatWhiteもまだまだ変わってくみたいだし 便利なクラスやプロパティが追加されていったりしますからね 最新入れてるなら、フレームスクリプトですが ちょっと練習がてらつくってみました コードが長くなっちゃったんで2回に分けます import org.papervision3d.view.BasicView import org.papervision3d.objects.DisplayObject3D import org.papervision3d.objects.primitives.* import org.papervision3d.objects.special.VectorShape3D import org.papervision3d.materials.ColorMaterial import org.papervision3d.materials.utils.MaterialsList import org.papervision3d.materials.shadematerials.FlatShadeMaterial import org.papervision3d.materials.MovieMaterial import org.papervision3d.lights.PointLight3D var vw=new BasicView(1,1,true,false) var mtr:ColorMaterial = new ColorMaterial(0x33AA88); var light:PointLight3D=new PointLight3D(false) var shdMtr:FlatShadeMaterial=new FlatShadeMaterial(light,0xAAFFCC,0x338844) var mtrList:MaterialsList=new MaterialsList({all:shdMtr}) var cubeList=new Array() var vecList=new Array() var txtList=new Array() var drc:Number=0 var dst:Number=500 var rot:Number=0 var prevX:Number=mouseX
補足
頂いたソースを大まかにですが解読し、自分なりに思い描く形に修正させて頂きました。 また問題点が出てきましたので、新たに投稿させて頂きますので、暇があれば教えてください。
- Hoge_Moge
- ベストアンサー率33% (1/3)
PV3Dなら入門書を買って順番にチュートリアルをこなしていく方が習得が早いですよ。 PV3Dには、様々なブランチバージョンがあって、バージョンアップの度に下位バージョンとの互換がなくなっていきます。 ネットの情報では、バージョンがごちゃごちゃに紹介されているので、効率的に学習するのには向いていないと思います。 おすすめの本は 「Flash3Dコンテンツ制作のためのPapervision3D入門」 です。プログラミングのための環境作り等も載っているので総合的にステップアップできます。 最終的には手にとって判断すると良いと思います。 頑張ってください。
お礼
Hoge_Mogeさんありがとうございます。 仰る通り、サイトのソースをサンプルにしようにもバージョンの 違いによりコンパイルすら出来ない状態です。 どのバージョンで作られたソースなのか、そもそも自分のバージョン すらよく分かっていない状態です。最新であることは確かですが。。 一度、参考書を手にとってみたいと思います。
- joy_28
- ベストアンサー率84% (45/53)
pv3dの世界では、clockmakerさんは、有名な方ですよね。 ご本人が、下のQ&Aのフォーラムを立ち上げてますので、そちらで、質問された方が、サンプルの原作者でもあり、pv3dの見識も相当高い方ですから、回答が得られると思いますよ。
お礼
joy_28さん ありがとうございます。 頂いたURLのフォーラムでも質問してみます。
関連するQ&A
- PV3Dでのアニメーション
下記のソースですが、以下のような動きを追加したいと考えています。 ・直方体の側面(4方向共)に10数個の矢印を縦に並べる ・矢印の向きは直方体方向 ・矢印の先は円錐型ではなく、四角柱型もしくはarrowクラスの ような形 ・カメラの初期位置を今の位置から更にx軸方向にもってくる (初期画面で軸が三菱のマークに見えるようなイメージ) です。 問題なのが、arrowクラスの引数が色指定しかない為、任意の大きさに 指定して配置することができません。自分でシンボルを作って配置する しかないのでしょうか。 また、テキストのyがどうしてもyに見えないのですが解決方法はありますか? 以下にソースを貼りますので、ご教授ください。 import org.papervision3d.view.BasicView import org.papervision3d.objects.DisplayObject3D import org.papervision3d.objects.primitives.* import org.papervision3d.objects.special.VectorShape3D import org.papervision3d.materials.ColorMaterial import org.papervision3d.materials.utils.MaterialsList import org.papervision3d.materials.shadematerials.FlatShadeMaterial import org.papervision3d.materials.MovieMaterial import org.papervision3d.lights.PointLight3D var vw=new BasicView(1,1,true,false) var mtr:ColorMaterial = new ColorMaterial(0x000000); var mtr1:ColorMaterial = new ColorMaterial(0x33AA88); var light:PointLight3D=new PointLight3D(false) var shdMtr:FlatShadeMaterial=new FlatShadeMaterial(light,0xAAFFCC,0x338844) var mtrList:MaterialsList=new MaterialsList({all:shdMtr}) var cubeList=new Array() var vecList=new Array() var txtList=new Array() var drc:Number=0 var dst:Number=500 var rot:Number=0 var prevX:Number=mouseX for(var i=0;i<3;i++){ cubeList.push(new Cube(mtrList,60,60,200)) vw.scene.addChild(cubeList[i]) cubeList[i].x=150 cubeList[i].y=150 cubeList[i].z=150 vecList.push(new DisplayObject3D()) var cone=new Cone(mtr,10,30) var bar=new Cylinder(mtr,3,250) cone.y=250 bar.y=125 vecList[i].addChild(cone) vecList[i].addChild(bar) vecList[i][["rotationX","rotationY","rotationZ"][i]]=90 if(i==2)vecList[i].rotationZ=-90 vw.scene.addChild(vecList[i]) var movMtr=new MovieMaterial(makeTxtMov(["x","y","z"][i]),true,false,true) movMtr.oneSide=false txtList.push(new Plane(movMtr,50,50)) txtList[i][["x","y","z"][i]]=300 vw.scene.addChild(txtList[i]) } function makeTxtMov(str:String):MovieClip{ var rtn=new MovieClip() var fld=new TextField() var fmt=new TextFormat fmt.size=100 fmt.color=0x000000 fld.defaultTextFormat=fmt fld.text=str rtn.addChild(fld) return rtn } light.y=light.x=light.z=500 vw.camera.y=300 vw.startRendering() addChild(vw) vw.y=50 addEventListener(Event.ENTER_FRAME,frameTick) function frameTick(e){ drc+=rot rot*=0.98 for each(var txt in txtList)txt.rotationY=-drc*180/Math.PI-90 vw.camera.x=light.x=Math.cos(drc)*dst vw.camera.z=light.z=Math.sin(drc)*dst } stage.addEventListener(MouseEvent.MOUSE_DOWN,function(e){prevX=mouseX;stage.addEventListener(Event.ENTER_FRAME,setRot)}) stage.addEventListener(MouseEvent.MOUSE_UP,function(e){stage.removeEventListener(Event.ENTER_FRAME,setRot)}) function setRot(e){ rot=(prevX-mouseX)/300 prevX=mouseX } ※元ソースは頂き物です。
- 締切済み
- Flash
- UNITYのカメラアングル
unity 3dで質問です。 新規でプロジェクトを作るとカメラはデフォルトで 右がX軸プラス、上がY軸プラス、奥行きがZ軸プラス になっていて、座標位置がX0、Y1、Z-10になっています。 Cubeなどのゲームオブジェクトを新規で作ると 座標位置がX0、Y0、Z0に置かれ、後ろから見ているような アングルになると思うのですが、なぜ、デフォルトがこのような仕様なのでしょうか。 一般的にゲームを作っていく場合、下記のどちらになりますでしょうか。 また、皆さんはどちらで作られますでしょうか。 ・Z軸プラス方向にオブジェクトを配置していき、後ろからのアングルのまま作っていく ・カメラを反転させ、Z軸プラス方向からマイナス方向のアングルに変更し、 Z軸マイナス方向にオブジェクトを配置し作っていく 何か勘違いや考え方が間違っていたら教えてください。
- ベストアンサー
- その他(プログラミング・開発)
- 直線型錯体のd軌道分裂について
d軌道分裂について 直線型錯体のd軌道分裂はどのようになるのでしょうか? 結晶場理論で考えようとすると、その直線がx軸、y軸、z軸のどの方向に向いているかによって分裂の仕方が変わってはこないでしょうか。 例えばx軸またはy軸に直線が乗っていると、クーロン反発によりdx^2-y^2のエネルギーは上がりますが、z軸に乗って いるとdx^2-y^2のエネルギーは逆に下がる気がします。 結晶場理論において、錯体の軸の取り方をふまえて直線型錯体のd軌道分裂がどのようになるか御説明お願いします。
- ベストアンサー
- 化学
- divで『Ex(x+Δ、y+Δ、z+Δ)-Ex(x+Δ、y、z)』は無視できる?
div(発散)の定義の途中過程についてです。 P(x、y、z)の近くに各座標軸に沿った長さがΔx、Δy、Δzの微小直方体を考える。 その微小直方体のyz平面に平行な面をそれぞれA、Bとする。 (Aのx座標がx、Bのx座標が(x+Δx)) E(Ex、Ey、Ez)とする。 ∫(A+B)Exds={(Ex(x+Δx、y、z)-Ex(x、y、z))/Δx}ΔxΔyΔz 『ここでy、z座標の値も面内で変化しているが、それはΔy、Δzについ 高次の寄与しか与えない。』・・・※ この最後の1文についてなのですが、 私は〈微小直方体におけるExのy方向、z方向の変化量『Ex(x+Δx、y+Δy、z+Δz)-Ex(x+Δx、y、z)』は x方向の変化量『Ex(x+Δx、y、z)-Ex(x、y、z)』に比べると無視できる〉つまり 『Ex(x+Δx、y、z)-Ex(x、y、z)>>Ex(x+Δx、y+Δy、z+Δz)-Ex(x+Δx、y、z)』と解釈しました。 そこで質問なのですが、 自分には『Ex(x+Δx、y、z)-Ex(x、y、z)>>Ex(x+Δx、y+Δy、z+Δz)-Ex(x+Δx、y、z)』はちっとも明らかには思えないのですが、 なぜこれが成り立つのでしょうか? ここら辺の説明が詳しく載っている参考書がなくて困っています。 (どの参考書でも明らかとしてサラッと流されている。) どなたかよろしくお願い致します。 以下参考HPです。 http://www.ese.yamanashi.ac.jp/~itoyo/lecture/denkigaku/denki01/denki01.htm#発散
- ベストアンサー
- 物理学
- 方向微分
ω=f(x、y、z)上の点(x0、y0、z0)における(cosα、cosβ、cosγ)方向への方向微分を求めよ。 (ただしベクトル(cosα、cosβ、cosγ)はx軸、y軸、z軸とのなす角がそれぞれα、β、γであるような単位ベクトル(方向余弦)である) 問題は以上です。 私の解いた回答は ω=f(x、y、z)を一次化するとdω=(∂f/∂x)dx+(∂f/∂y)dy+(∂f/∂z)dz 点(x0、y0、z0)からの方向微分なので dω=∂f/∂x(x0、y0、z0)dx+∂f/∂y(x0、y0、z0)dy+∂f/∂z(x0、y0、z0)dz となる。 よって (cosα、cosβ、cosγ)方向への方向微分= {∂f/∂x(x0、y0、z0)cosα+∂f/∂y(x0、y0、z0)cosβ+∂f/∂z(x0、y0、z0)cosγ}/√cos^2α+cos^2β+cos^2γ なのですがうまくまとまらず、もっときれいな形になるのではないかと思うのですが・・・。 どなたかアドバイスをお願いします。
- 締切済み
- 数学・算数
- Java3Dで横置き円筒体の円筒中心軸廻りに回転アニメーションさせたいのですが
Java3Dで円筒をY軸方向に直立配置した後、Y軸を中心軸としての回転アニメーションをさせるところまでは問題ないのですが、この円筒を90度倒して、すなわち、横置きにして同じ円筒中心軸とする回転アニメーションをするのはどのようにすればよいのでしょうか? X軸方向(axis.rotZ(Math.PI / 2.0 )を使って)、或いはZ軸方向に倒し、RotationInterpolatorを使っても、X軸、或いはZ軸を中心軸とした回転アニメーションにはならず、逆にZ軸、或いはX軸廻りに回転する結果となってしまいます。これは、回転軸に関してはY軸が基本で、円筒を倒すと同時にY軸も円筒と共に90度倒れることによると思われます。 横置き円筒軸廻りの回転アニメーションはどのようにすればできるのでしょうか?
- ベストアンサー
- Java
- 応力の平衡方程式について
x、y、z軸に垂直な面で切って作った辺長dx、dy、dzの微少直方体について力のつりあいおよびモーメントのつりあいを考えるとき、 x方向の力のつりあいの式がなぜ下記のようになるのか分かりません。 Xは単位体積あたりの物体力のx軸方向成分です。 ∂/∂x(σxdydz)dx + ∂/∂y(σyxdzdx)dy + ∂/∂z(σzxdxdy)dz + Xdxdydz = 0 σxdydz、σyxdzdx、σzxdxdyは応力*面積なので、x方向の力を表していることは分かるのですが、なぜそれらにdx、dy、dzをかけてさらに偏微分しているのか分かりません。この式の意味を教えてください。 お願いします。
- ベストアンサー
- 物理学
- 空間の座標について
空間図形の座標なんですが、 進行方向に対して、左右方向がX軸 進行方向をY軸、深度をZ軸としたX-Y-Z空間があります。 X-Y平面でY軸を0とした時の角度をβ X-Y平面とZ軸と方向との角度をα 原点から(x、y、z)までの距離をLとする このとき、点(x、y、z)をもとめるにはどうしたらよいのでしょうか? ちなみにx=y=zは0ではありません できれば三角関数を使った解法を教えてください ちなみに (x、y、z)=(Lsinβ、Lcosβsinα、Lcosβsinα) という答えらしいんですが、さっぱりわかりません・・ って、うまくかけてない・・・
- ベストアンサー
- その他(学問・教育)
- vectorworks12.5 3Dについて
データパレットなどでZ軸の位置を知りたいのですが、図形によっては表示されず、ΔXΔYだけになります。 すべての3D図形のZ位置を知る方法はないのでしょうか?
- ベストアンサー
- CAD・DTP
- 慣性モーメントの問題
密度が一定(ρ_0とする)の次の指定された軸の周りの慣性モーメントを計算せよ。 (1)一辺の長さaの立方体。立方体の一辺を軸にした場合の慣性モーメントおよび、立方体の中心を通り、相対する2面に垂直な軸に関する慣性モーメント。 (2)xyz空間でx^2+y^2≦z^2,0≦z≦hで定義される物体。z軸に関する慣性モーメント。 この問題で、(1)の前者=∫∫∫_D ρ_0(x^2+y^2)dxdydz,D=(0≦x≦a,0≦y≦a,0≦z≦a)として解いてあり、(1)の後者=8∫∫∫_D ρ_0(x^2+y^2)dxdydz,D=(0≦x≦a/2,0≦y≦a/2,0≦z≦a/2)として解いてあり、(2)=∫∫∫_V ρ_0(x^2+y^2)dxdydz,v=(x^2+y^2≦z^2,0≦z≦h)として解いてあったのですが。 ここで質問です。 (1)確かに慣性モーメントの公式はI=∫∫∫ρ(x、y、z)r^2(x,y,z)dxdydzなのですが、なぜ、(1)(2)ともにr^2のところがx^2+y^2なのでしょうか?zが入ってもおかしくないと思うのですが。r^2は軸からの距離ですし。これは、自分の都合よく平面で考えて良いということなのですか? (2)(1)の後者で8倍してありますが、何をもって8倍なのでしょうか? (3)そもそも慣性モーメントとはなんなのか? この3つの私の質問の答えを教えてください。よろしくお願いします。
- ベストアンサー
- 数学・算数
お礼
H240S18B73さん、ご返答遅くなり申し訳ないです。 さっそくではありますが、頂いたソースを今から試してみたいと思います。 また、質問等させて頂くかもしれませんが、暇であればで結構ですので、よろしくお願い致します。
補足
H240S18B73さん、再度の報告です。 正直すごい感動です。 昨日まで自分なりにasファイルを作成し作っていましたが、 マウスイベントや、回転軸、ライト等で詰まってしまい、 どうしても綺麗なものにはならなかったです。 フレームアクションとASファイルとのソースの違いは、これから 勉強していきたいと思いますが、個人的にご教授願いたいくらい です。 とりあえず今から、ソースの解読をしていきたいと思います。