トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     Papervison3Dとブラウザの拡大表示
投稿するにはまず登録を

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tamachan55
Åê¹ÆNo.46152
投稿日時: 2010-10-15 22:33
半人前
居住地:
投稿: 44
使用環境:
Win7,Flash CS4,
Re: Papervision3Dとブラウザの拡大表示
返信ありがとうございます。
もう少し上達してから
質問しようと思います

その時はよろしくお願いします
野中文雄
Åê¹ÆNo.46151
投稿日時: 2010-10-15 22:19
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: Papervision3Dとブラウザの拡大表示
「辺ABと辺BCの長さ比」はtanです。その値から角度を求めるのは、逆三角関数になります。

参考:「角度と座標の計算 ? Flash の三角関数を使う

「16進数」にしろ、「三角関数」にしろ、つまずいたまま先に進むことはできないと思います。
引用:
tamachan55さんは書きました:
A




|----------------------C
B

上記のようにACが斜辺の直角三角形で
辺ABと辺BCの長さ比から角度Aを求めるコード(AS3.0)が解りません。


----------------
 

ひろゆき
Åê¹ÆNo.46150
投稿日時: 2010-10-15 22:03
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: Papervision3Dとブラウザの拡大表示
引用:
tamachan55さんは書きました:
A




|----------------------C
B

上記のようにACが斜辺の直角三角形で
辺ABと辺BCの長さ比から角度Aを求めるコード(AS3.0)が解りません。

Math.atan2(y, x)


----------------
質問する際は、回答者に具体的な情報を与えてください。

ひろゆき
Åê¹ÆNo.46124
投稿日時: 2010-10-15 11:43
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: Papervision3Dとブラウザの拡大表示
トピックのタイトルを変えたところで、
表題の内容と質問の内容が異なってきています。

別途、質問されるべきでは?

また、その際には、Papervision3Dと一旦切り離して、質問されるべきだと思います。
そうでないと、何が問題の核心部分なのか、不明確になります。


----------------
質問する際は、回答者に具体的な情報を与えてください。

tamachan55
Åê¹ÆNo.46116
投稿日時: 2010-10-14 20:52
半人前
居住地:
投稿: 44
使用環境:
Win7,Flash CS4,
Papervision3Dとブラウザの拡大表示
A




|----------------------C
B

上記のようにACが斜辺の直角三角形で
辺ABと辺BCの長さ比から角度Aを求めるコード(AS3.0)が解りません。
ご教授いただげれば幸いです。

質問をした理由は以下です。

このトピックで質問しながら制作している地球ムービーの
カメラとbackの連動が上手くいきません。
back.zはカメラがz移動しても

back.z = camera.z + 1500

のように一定の距離を保つようにしたのですが

中心点(x,y,z=0,0,0)をtargetにしているカメラがy方向に動くときbackがカメラに対して同じ相対的位置、角度を保つ方法がわかりません。
backのrotationをカメラアングルに対して常に垂直(Tの字)にすれば良いと思いますが、
私の知識範囲ではカメラのy移動量とカメラと中心点のz距離からMath.tanかMath.atanを使うのだろう・しかし使い方(式)は解らない状態です。

この図は空間を横から見た図です。
  -Y
                            
  ↑                          
 
-Z A --------------B--------------C|+Z
                                              
  ↓

  +Y

A カメラ(Y方向、上下に動く。アングルは常に0,0,0、を向く)
B 中心点(0,0,0)
C back(カメラが上下に動くと視界から外れる。または傾いて映る。)
この場合、ABとBCの長さ比がAがY方向に移動した場合のCのY位置に関係すると思いますが、C.y= A.y*(BC/AB)*-1;で良いでしょうか?
それと、zの距離を一定にしても、カメラAがY移動するとAC間の絶対距離も増大するのでbackCの見た目を変化させないためには、カメラのY移動に伴ってbackCのscale
を拡大しなければならないでしょうか?

何かもっと簡単な方法があるような気もしますが・・・



ライティングはなんとか出来ました
ライティングをするとぐっと見栄えがよくなりますね

今のところの進捗状況です。
back画像は1000*1000のjpg
を使用してます。
現在の問題 = キーボードの←→(カメラのY移動)でback画像が傾きます


package {

	import flash.ui.Keyboard;
	import flash.events.*;
		
	import org.papervision3d.view.*;
	import org.papervision3d.materials.*;
	import org.papervision3d.objects.primitives.*;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.render.BasicRenderEngine;
	
	import org.papervision3d.lights.*;
       import org.papervision3d.materials.shaders.*;   

	import org.papervision3d.objects.special.ParticleField;
       import org.papervision3d.materials.special.ParticleMaterial;

	public class Earthmove extends BasicView {
		private var light:PointLight3D;
		private var r:Number=0;
		var degrees_int:int=60;//角度
	
		public function Earthmove() {
			
              
			 super(stage.stageWidth, stage.stageHeight  , true, true );

			var centerx_int:int=0;//中心x座標(0がStage上中心)
			var centerz_int:int=0;//中心z座標
			var diameter_int:int=2000;//半径
			var speed_int:int=1;//毎回の移動角度
 
             //背景 = uchuu
            var material2:BitmapAssetMaterial=new BitmapAssetMaterial('back');
			var uchuu:Plane=new Plane(material2,15000,15000);
			uchuu.useOwnContainer=false;
									
			//星屑を追加
			var particleMat:ParticleMaterial = new ParticleMaterial(0xFFFFFF, 1)
            var particles:ParticleField = new ParticleField(particleMat, 5000, 4,  10000, 10000,10000);
		    //ライト設定
			light = new PointLight3D(true,false);
            light.z = 0;
            light.x =0;
            light.y = 0;

			//地球
			var material:BitmapAssetMaterial=new BitmapAssetMaterial('Earth');
			var shader = new FlatShader(light, 0xFFFFFF, 0x555555,0.5) ;
			var shadedMaterial = new ShadedMaterial(material, shader) 
			var sphere:Sphere=new Sphere(shadedMaterial,100,30,30);
			sphere.useOwnContainer=true;
					    
        			
			addEventListener(Event.ENTER_FRAME, function(d){  ;
																									

			sphere.x = Math.sin(degrees_int * Math.PI/180) * diameter_int + centerx_int;
			sphere.z = Math.cos(degrees_int * Math.PI/180) * diameter_int + centerz_int;
			degrees_int += speed_int;
			degrees_int %= 360;//360以上になった場合に0?へ戻す
			
//背景の位置 背景はカメラが動いても見た目の表示を変えたくない
		 uchuu.x = camera.x;
			uchuu.z = camera.z +15000;

//次の二行がわかりません。
uchuu.y =camera.y*(uchuu.z/-camera.z)*-1;
uchuu.rotationX =Math.atan2(-camera.z,camera.y);			
			
		}
		)
		scene.addChild(uchuu);
		scene.addChild(sphere);
		scene.addChild( particles );
		
		startRendering();

		// 球面を回転させる  

		addEventListener(Event.ENTER_FRAME, function(e){  ;
		sphere.rotationY += 4;
		
	}
	)
	camera.focus=500;
	camera.zoom=3;
	camera.x=0;
	camera.y=0;
	camera.z=-3000;
	if(camera.z >= 0){camera.z = 0};
	stage.addEventListener(KeyboardEvent.KEY_DOWN,keyboardDownEvent);

	startRendering();
}
//キーボードのKeyDownイベント処理
private function keyboardDownEvent(event:KeyboardEvent):void {
	switch (event.keyCode) {
		case 39 :
			//→キー
			camera.y+=100;
			break;
		case 37 :
			//←キー
			camera.y-=100;
			break;
		case 38 :
			//↑キー
			camera.z+=100;
			break;
		case 40 :
			//↓キー
			camera.z-=100;
			break;
				}
	}

}
}
 


トピックのタイトル変更しました。

ドキュメントクラス→Papaervison3D
tamachan55
Åê¹ÆNo.46103
投稿日時: 2010-10-14 0:20
半人前
居住地:
投稿: 44
使用環境:
Win7,Flash CS4,
Re: ドキュメントクラスとブラウザの拡大表示
返信ありがとうございます。
noBorderも良いかもしれませんね。
試してみます。
しかしまたまた問題発生しました。
先ほどの追加コードでは背景画像もキーボードのズームに連動してしまい、特にカメラのアップダウンでおかしなことになりました。
今後は背景だけがカメラに適応されない方法を探ろうと思います。

ライティングも試してみようと思います。
補助光を使えば真っ暗にはならないと思いますから。
太陽と地球のxy軸が一致した時に日食みたいになれば尚良いのですが、太陽にグローを付ければできるかも?です。
本日はありがとうございました。
ひろゆき
Åê¹ÆNo.46102
投稿日時: 2010-10-14 0:05
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: ドキュメントクラスとブラウザの拡大表示
背景画像の端が切れて見えるような画像であれば、
showAllはたとえ全体像が見えたとしても、不格好に思えます。

したがって、backの画像を具体的にされなければ、どちらが良いとは言えません。

少なくとも、客観的に分かるような説明なり、なさりたいことを明記しなければ、
回答者には分かりづらいだけだと思います。

なので、後は、ご自分でどうぞ。


----------------
質問する際は、回答者に具体的な情報を与えてください。

tamachan55
Åê¹ÆNo.46101
投稿日時: 2010-10-13 23:53
半人前
居住地:
投稿: 44
使用環境:
Win7,Flash CS4,
Re: ドキュメントクラスとブラウザの拡大表示
とりあえずなんとか、最低限の課題として
backの拡大も出来ました。
大画面にした時にやはりbackの宇宙画像が迫力があるので
小さい画面限定で諦めなくて良かったです。
結局、私が困っていた問題があまりにも根本的すぎて
ベテランの皆さんに上手く伝わらなかったと思います。


var material2:BitmapAssetMaterial=new BitmapAssetMaterial('back');
			var uchuu:Plane=new Plane(material2,10000,10000);
			uchuu.useOwnContainer=true;


uchuu.x = 0;
			uchuu.y = 0;
			uchuu.z = 5000;

scene.addChild(uchuu);


を加えました。
scaleModeについては用途にも依ると思いますが
このクリップの場合は小さい画面でも大きい画面でも
同じ縦横比で全体を眺められるという意味でshowAllが良いのでは
ないでしょうか?

反対意見もお願いします。

後はライティングも施せばさらに良いと思いますが
私の元ネタは太陽がxyz(000)に有りまして、それを光源に設定すると
地球が手前に接近したら真っ黒になるので、今回はライティングは止めようと思います。
ひろゆき
Åê¹ÆNo.46100
投稿日時: 2010-10-13 23:22
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: ドキュメントクラスとブラウザの拡大表示
showAllだと、ブラウザサイズによっては、背景画像がキレてしまいますが。


----------------
質問する際は、回答者に具体的な情報を与えてください。

tamachan55
Åê¹ÆNo.46099
投稿日時: 2010-10-13 23:08
半人前
居住地:
投稿: 44
使用環境:
Win7,Flash CS4,
Re: ドキュメントクラスとブラウザの拡大表示
返信ありがとうございます。
「Stage.scaleModeの値」は拝見しております。
今回のケースでは「showAll」が望む効果です。
(1) 2 3 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops