Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

superkatatau

Papervision ou Não?

Recommended Posts

Olá Pessoal,

 

estamos com uma idéia de fazer algo semelhante a isso:

 

http://demos.hellohikimori.com/diesel-otb-ironman/

 

Esse detalhe do moviento do mouse em parallax 3d com ease.

Tenho uma vaga ideia de que isso é feito com papervision. Alguem tem algum tutorial ou pelo menos sabe como eu posso encontrar alguma referencia para fazer isso?

 

Obrigado

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não precisa usar Papervison3D pra isso. A partir do Flash Player 10, o player incorpora, nativamente, suporte ao 3D. Isso não significa que o Papervision3D perdeu seu papel, pelo contrário, a biblioteca passou a utilizar desses recursos nativos. Para o seu caso, você não precisará de nada além de definir as coordenadas Z dos elementos visuais do seu filme e, então, rotacioná-los com as propriedades rotatetionX e rotatetionY.

 

import flash.display.Shape;
import flash.events.MouseEvent;

var teste:Shape = new Shape();
teste.graphics.beginFill(0);
teste.graphics.drawRect(-100, -100, 200, 200);
teste.x = stage.stageWidth / 2;
teste.y = stage.stageHeight / 2;
addChild(teste);

stage.addEventListener(MouseEvent.MOUSE_MOVE, stageMouseMoveHandler)
function stageMouseMoveHandler(e:MouseEvent):void
{
teste.rotationX = (stage.mouseY - stage.stageHeight / 2) / stage.stageHeight * 90;
teste.rotationY = -(stage.mouseX - stage.stageWidth / 2) / stage.stageWidth * 90;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dae Bruno,

obridado pela resposta, realmente bem interessante.

Fiz o teste que voce comentou... coloquei mais 3 elementos e defini 3 posições em z diferentes. Porém não consegui perceber aquele efeito de movimento em profundidade. Pensei que para isso fossem usadas as cameras e quem se movia seria a camera, e não o objeto.

 

O que estou fazendo errado.

Defini as posições desta forma:

teste1.z = 100;

teste2.x = 250;

teste3.z = -250;

 

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites
import flash.events.MouseEvent;
import flash.display.Sprite;

var container:Sprite = new Sprite();
container.x = stage.stageWidth / 2;
container.y = stage.stageHeight / 2;
addChild(container);

var teste1:Sprite = new Sprite();
teste1.graphics.beginFill(0, .5);
teste1.graphics.drawRect(-100, -100, 200, 200);
container.addChild(teste1);

var teste2:Sprite = new Sprite();
teste2.graphics.beginFill(0, .5);
teste2.graphics.drawRect(-100, -100, 200, 200);
teste2.x = -100;
teste2.z = 100;
container.addChild(teste2);

var teste3:Sprite = new Sprite();
teste3.graphics.beginFill(0, .5);
teste3.graphics.drawRect(-100, -100, 200, 200);
teste3.x = 100;
teste3.y = -50;
teste3.z = -100;
container.addChild(teste3);

stage.addEventListener(MouseEvent.MOUSE_MOVE, stageMouseMoveHandler)
function stageMouseMoveHandler(e:MouseEvent):void
{
container.rotationX = (stage.mouseY - stage.stageHeight / 2) / stage.stageHeight * 90;
container.rotationY = -(stage.mouseX - stage.stageWidth / 2) / stage.stageWidth * 90;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.