Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.04.2011, 11:42
Ossikuro вне форума Посмотреть профиль Отправить личное сообщение для Ossikuro Найти все сообщения от Ossikuro
  № 1  
Ответить с цитированием
Ossikuro
 
Аватар для Ossikuro

Регистрация: Feb 2009
Сообщений: 66
По умолчанию spherical panorama. повороты на движение мыши

Здравствуйте, помогите пожалуйста разобраться с поворотом сферы и камеры внутри сферы в сферической панораме.

Код AS3:
stage.scaleMode = StageScaleMode.NO_SCALE;
var mymousedown: Boolean = false;
var scene:Scene3D;
var camera:Camera3D;
var sphere:Sphere;
var lTg:TransformGroup = new TransformGroup("rotation");
initTutoMovieMaterial ();
var MX=mouseX;
var MY=0;
stop();
//var deltaMouseX =0;
var deltaY =0;
//var cameraY =0;
//stage.addEventListener (MouseEvent.MOUSE_DOWN, downed);
//stage.addEventListener (MouseEvent.MOUSE_UP, uped);
 
//*************************************сцена****************************************
function initTutoMovieMaterial ()
{
//ставим камеру
	camera = new Camera3D(stage.stageWidth,stage.stageHeight);
	//camera.lookAt(0,0,0);
	camera.z=-500;
//создаем группу сцены
	var rootGroup:Group = createScene();
	scene = new Scene3D("myScene",this,camera,rootGroup);
//события поворота
	addEventListener ( Event.ENTER_FRAME, enterFrameHandler );
	stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedHandler);
	stage.addEventListener (MouseEvent.MOUSE_DOWN, downed);
    stage.addEventListener (MouseEvent.MOUSE_UP, uped);
}
 
//*************************************шар******************************************
function createScene ():Group
{  
// группа объектов, создаем сферу и вталкиваем ее в группу
	var g:Group = new Group();
	sphere = new Sphere("sphere", 1000,50,50);
	//sphere.z=0;
    sphere.enableBackFaceCulling = true;
    sphere.swapCulling(); 
//материал сферы
	var mFront:MovieMaterial = new MovieMaterial( new MovieMaterialClass() );
	sphere.appearance = new Appearance(mFront);
//группа для трансформации и группа всех объектов, на случай, если какие-то объекты трансформироваться не будут
	lTg.addChild (sphere);
	g.addChild (lTg);
	return g;
}
 
 
//*************************************рендер сцены*********************************
function enterFrameHandler ( event : Event ):void
{
scene.render ();
}
 
//*************************************события мыши*********************************
function keyPressedHandler(event:flash.events.KeyboardEvent):void 
	  {
	   switch(event.keyCode) {
		case Keyboard.UP:
			lTg.rotateX -=3;
			break;
		case Keyboard.DOWN:
			lTg.rotateX +=3;
			break;
		case Keyboard.LEFT:
			lTg.rotateY -=3;
			break;
		case Keyboard.RIGHT:
			lTg.rotateY +=3;
			break;
		case Keyboard.PAGE_DOWN:	
			camera.x -= 50;
			break;
	    case Keyboard.PAGE_UP:	
			camera.x += 50;
			break;}}
 
function downed (e:MouseEvent): void {
	//stage.addEventListener(MouseEvent.MOUSE_MOVE, moving);
	mymousedown=true;
	}
 
function uped (e:MouseEvent): void {
	mymousedown=false;
	//stage.removeEventListener(MouseEvent.MOUSE_MOVE, moving);
	}
this.addEventListener(MouseEvent.MOUSE_MOVE, moving);
 
function moving (e:MouseEvent):void{
if (mymousedown){
	var deltaMouseX=MX - mouseX;
	var deltaMouseY=MY - mouseY;
	var deltaMouseX_percent=deltaMouseX*100/stage.width;
	var deltaMouseY_percent=deltaMouseY*100/stage.height;
	if (deltaMouseX_percent>deltaMouseY_percent){
		lTg.rotateY +=deltaMouseX*30/1000}
		}
	else if (deltaMouseY_percent>deltaMouseX_percent){
	cameraY=deltaMouseY*90/1000;}
}
ротэйшн ведет себя очень странно, если я правильно поняла, то координатная сетка сместилась на центр сцены и я высчитать дельту х и у мыши не могу. Сфера крутится все время в одну сторону, куда бы я мышку ни перемещала

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:33.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:33.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.