flash 3d flash3d 研究所 pv3d 共享资源  | 经典范例  | 视频教程  | 友情链接  | 联系我们
登陆 | 注册  flash 3d 研究所
讨论区





最近更新:
● 无语瓶阁下在教程区里 回复“《超简易papervision3D基础 ...”(18:09:44)
● payday loan阁下在教程区里 回复“《pv3d, sandy, away3d...”(05:56:23)
● bad credit payday loan阁下在教程区里 回复“《超简易papervision3D基础 ...”(05:56:13)
浏览主题:关于倒影(已贴代码,请帮忙看看)

关于倒影(已贴代码,请帮忙看看)
(2009-03-31 10:59:26)

import flash.display.*;
import flash.events.Event;
//导入Tweenlite类
import gs.TweenLite;
import gs.easing.*;
//导入四大基本3D类
import org.papervision3d.cameras.FreeCamera3D;//摄象机
import org.papervision3d.render.BasicRenderEngine;//渲染器
import org.papervision3d.scenes.Scene3D;//场景
import org.papervision3d.core.effects.view.ReflectionView;//倒影窗口

import org.papervision3d.materials.BitmapFileMaterial;//位图文件材料(外部)

import org.papervision3d.objects.primitives.Plane;//平面
import org.papervision3d.objects.DisplayObject3D;//3D物体(所有3D物体都是继承自它

import org.papervision3d.events.InteractiveScene3DEvent;//交互事件
//声明
var viewport:ReflectionView;
var renderer:BasicRenderEngine;
var scene:Scene3D;
var camera:FreeCamera3D;

var plane1:Plane;
var plane2:Plane;
var my3d_mc:DisplayObject3D;
var mybit1:BitmapFileMaterial;
var mybit2:BitmapFileMaterial;

var pd:int = 1;
//
viewport=new ReflectionView(550,400,false,true);
renderer=new BasicRenderEngine ;
scene=new Scene3D;
camera=new FreeCamera3D();

my3d_mc = new DisplayObject3D();
mybit1 = new BitmapFileMaterial("map1.jpg");
mybit2 = new BitmapFileMaterial("map2.jpg");
plane1 = new Plane(mybit1,300,300,3,3);
plane2 = new Plane(mybit2,300,300,3,3);

stage.addChild(viewport);
scene.addChild(my3d_mc);
my3d_mc.addChild(plane1);
my3d_mc.addChild(plane2);
//
plane1.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,fanzhuan)
plane2.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,fanzhuan)
function fanzhuan(event:InteractiveScene3DEvent):void{
     if(pd == 1){
           TweenLite.to(my3d_mc, 2, {x:0, y:0,rotationY:180,ease:Circ.easeOut});
     }else{
           TweenLite.to(my3d_mc, 2, {x:0, y:0,rotationY:0,ease:Circ.easeOut});
     }
     pd = -pd
}
//开始渲染
addEventListener(Event.ENTER_FRAME,renderer_start);
function renderer_start(event:Event):void {
     viewport.singleRender()
     renderer.renderScene(scene,camera,viewport);
}
//初始化
plane2.rotationY = 180;
camera.zoom = 50
camera.z = -800
///////////////////////////////////////////////////////////////////////

结果还是报错啊,PS:我是写在时间轴第一帧上的。


flash 3d 研究所 kolapander
(2009-03-31 14:11:41)
renderer.renderScene(scene,camera,viewport);去掉
这句里面的viewport需要是viewport3类型而你的viewport是ReflectionView类型

flash 3d 研究所 fur3
(2009-03-31 14:29:14)
ReflectionView是个basicView

kolapander兄是高手呢


flash 3d 研究所
(2009-03-31 14:51:31)
那具体这句应该怎么写呢,之前替换过,还是不行

flash 3d 研究所 kolapander
(2009-03-31 15:24:01)
过奖了
也在摸索中
呵呵
大家多关照

flash 3d 研究所 kolapander
(2009-03-31 15:24:44)

renderer.renderScene(scene,camera,viewport);
直接去掉就可以了
不是替换

flash 3d 研究所 kolapander
(2009-03-31 16:05:59)
import flash.display.*;
import flash.events.Event;
//导入Tweenlite类
import gs.TweenLite;
import gs.easing.*;
//导入四大基本3D类
import org.papervision3d.cameras.Camera3D;//摄象机
import org.papervision3d.render.BasicRenderEngine;//渲染器
import org.papervision3d.scenes.Scene3D;//场景
import org.papervision3d.core.effects.view.ReflectionView;//倒影窗口

import org.papervision3d.materials.*;//位图文件材料(外部)

import org.papervision3d.objects.primitives.Plane;//平面
import org.papervision3d.objects.DisplayObject3D;//3D物体(所有3D物体都是继承自它

import org.papervision3d.events.InteractiveScene3DEvent;//交互事件
//声明
var viewport:ReflectionView;
var renderer:BasicRenderEngine;
var scene:Scene3D;
var camera:Camera3D;

var plane1:Plane;
var plane2:Plane;
var my3d_mc:DisplayObject3D;
var mybit1:*;
var mybit2:BitmapFileMaterial;

var pd:int = 1;
//
viewport=new ReflectionView(550,400,false,true);
viewport.surfaceHeight = -300
renderer=new BasicRenderEngine ;
scene=new Scene3D;
camera=new Camera3D();

my3d_mc = new DisplayObject3D();
//mybit1 = new BitmapFileMaterial("map1.jpg");
mybit2 = new BitmapFileMaterial("map2.jpg");
mybit1 = new ColorMaterial(0xff00ff);
plane1 = new Plane(mybit1,300,300,3,3);
plane2 = new Plane(mybit2,300,300,3,3);

stage.addChild(viewport);
viewport.scene.addChild(my3d_mc);
my3d_mc.addChild(plane1);
my3d_mc.addChild(plane2);
//
plane1.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,fanzhuan)
plane2.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK,fanzhuan)
function fanzhuan(event:InteractiveScene3DEvent):void{
if(pd == 1){
  TweenLite.to(my3d_mc, 2, {x:0, y:0,rotationY:180,ease:Circ.easeOut});
}else{
  TweenLite.to(my3d_mc, 2, {x:0, y:0,rotationY:0,ease:Circ.easeOut});
}
pd = -pd
}
//开始渲染
addEventListener(Event.ENTER_FRAME,renderer_start);
function renderer_start(event:Event):void {
viewport.singleRender()
//renderer.renderScene(scene,camera,viewport);
}
//初始化
plane2.rotationY = 180;
camera.zoom = 50
camera.z = -800

flash 3d 研究所 fur3
(2009-03-31 17:30:18)
写成类吧,不要写成祯语句
然后就可以直接继承 extends ReflectionView, 其他用法就和basicView一样了

flash 3d 研究所
(2009-03-31 17:50:20)
谢谢啊,试出来了。还有个小问题,就是现在倒影和MC的距离很大,有什么方法可以拉近它们的距离么?

flash 3d 研究所 fur3
(2009-03-31 22:10:05)
不错!具体是哪里的问题呢?
这个倒影不是‘真’的倒影啦,只能视觉上靠近些而已



flash 3d 研究所 kolapander
(2009-04-01 08:32:43)
修改viewport.surfaceHeight 值调整距离


flash 3d 研究所 zhangkan654
(2009-06-09 18:45:44)
请问上面这段程序,如果我想两个图片都显示怎么办呢?因为我试了一下,按上述方法,显示出结果:两个图片是重叠的(通过设置plane2.rotationY = 180;改变角度发现两个图是在一个数轴上
)。所以有什么办法让两个图的位置分开来显示呢?谢谢啦

flash 3d 研究所 DDM君
(2009-06-10 10:05:52)
两个图是指上下倒影的两个图?不能分开的吧,否则怎么能叫倒影呢

flash 3d 研究所 zhangkan654
(2009-06-10 14:04:38)
不好意思,DDM君,我表达不太清楚~~我的意思是如果我想分别做出两个不同的图片的倒影效果,在一个画面中一起表达出来(即例子中的mybit1 和mybit2分别有自己的倒影),怎么能改变mybit1 或者mybit2的位置,使得mybit1和mybit2这两张原图(两张图不是上下倒影关系)分开排列?(即左边显示mybit1和它的倒影,右边显示mybit2和它的倒影)谢谢了!!!

flash 3d 研究所
(2009-06-11 08:21:18)
x赋不同值

flash 3d 研究所 DDM君
(2009-06-11 10:34:28)
个人对这个类研究很少(因为我们很少可能用到这个功能),但改变1,2的横坐标x,难道没用吗?

flash 3d 研究所 zhangkan654
(2009-06-12 21:34:07)
哦,是的是的,不好意思啦,本人是菜鸟,谢谢大家

评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了