看flare3D之黄河星球demo,提起我的兴趣。故我就用我较熟悉之Alternativa3D实现一下。就用这个方法实现了。贴代码瞧瞧

package
{import alternativa.engine3d.controllers.SimpleObjectController;import alternativa.engine3d.core.Camera3D;import alternativa.engine3d.core.Object3D;import alternativa.engine3d.core.Resource;import alternativa.engine3d.core.View;import alternativa.engine3d.lights.DirectionalLight;import alternativa.engine3d.loaders.ParserCollada;import alternativa.engine3d.materials.FillMaterial;import alternativa.engine3d.materials.NormalMapSpace;import alternativa.engine3d.materials.StandardMaterial;import alternativa.engine3d.materials.TextureMaterial;import alternativa.engine3d.objects.Mesh;import alternativa.engine3d.primitives.Box;import alternativa.engine3d.resources.BitmapTextureResource;import alternativa.engine3d.resources.TextureResource;import flash.display.Bitmap;import flash.display.BitmapData;import flash.display.Sprite;import flash.display.Stage3D;import flash.display.StageAlign;import flash.display.StageScaleMode;import flash.display3D.Context3D;import flash.events.Event;import flash.geom.ColorTransform;import flash.geom.Rectangle;public class Test1 extends Sprite{[Embed(source="textures/texture.jpg")]static private const EmbedTexture:Class;[Embed("models/model.dae",mimeType="application/octet-stream")]static private const EmbedModel:Class;private var stage3D:Stage3D;private var context3D:Context3D;private var rootContainer:Object3D;private var camera:Camera3D;private var view:View;private var controller:SimpleObjectController;private var tm:FillMaterial;private var mb:Boolean;private var mesh:Mesh;private var mesh1:Mesh;private var mesh2:Mesh;private var container:Object3D;private var redTextureResource:BitmapTextureResource;private var blueTextureResource:BitmapTextureResource;private var textureResource:BitmapTextureResource;private var material:TextureMaterial;private var rtb:Boolean=false;public function Test1(){stage.align=StageAlign.TOP_LEFT;stage.scaleMode=StageScaleMode.NO_SCALE;stage.frameRate=60;stage3D=stage.stage3Ds[0];stage3D.addEventListener(Event.CONTEXT3D_CREATE,context3DCreate);stage3D.requestContext3D();}private function context3DCreate(e:Event):void{context3D=stage3D.context3D;rootContainer=new Object3D();view=new View(stage.stageWidth,stage.stageHeight);addChild(view);camera=new Camera3D(0.1,100000);camera.view=view;rootContainer.addChild(camera);camera.rotationX=-100*Math.PI/180;camera.y=-100;camera.z=20;addChild(camera.diagram);controller=new SimpleObjectController(stage,camera,200);var parser:ParserCollada=new ParserCollada();parser.parse(XML(new EmbedModel()));mesh=parser.getObjectByName("Cylinder01") as Mesh;var redTextureBitmapData:BitmapData=new EmbedTexture().bitmapData;redTextureBitmapData.colorTransform(new Rectangle(0,0,1024,1024),new ColorTransform(1,0,0));var blueTextureBitmapData:BitmapData=new EmbedTexture().bitmapData;blueTextureBitmapData.colorTransform(new Rectangle(0,0,1024,1024),new ColorTransform(0,0,1));redTextureResource=new BitmapTextureResource(redTextureBitmapData);blueTextureResource=new BitmapTextureResource(blueTextureBitmapData);textureResource=blueTextureResource;material=new TextureMaterial(textureResource);mesh.setMaterialToAllSurfaces(material);mesh1=mesh.clone() as Mesh;mesh1.x=20;mesh2=mesh1.clone() as Mesh;mesh2.x=40;container=new Object3D();container.addChild(mesh);container.addChild(mesh1);container.addChild(mesh2);rootContainer.addChild(container);for each(var resource:Resource in rootContainer.getResources(true)){resource.upload(context3D);}blueTextureResource.upload(context3D);redTextureResource.upload(context3D);stage.addEventListener(Event.ENTER_FRAME,onEnterFrame);}private function onEnterFrame(e:Event):void{controller.update();container.rotationZ+=0.01;camera.render(stage3D);if(rtb){textureResource=blueTextureResource;camera.x=-10;//camera.rotationZ=-0.06;camera.rotationZ=Math.atan2(mesh.y-camera.y,mesh.x-camera.x)*Math.PI/180-0.06;}else{textureResource=redTextureResource;camera.x=10;//camera.rotationZ=0.06;camera.rotationZ=Math.atan2(mesh.y-camera.y,mesh.x-camera.x)*Math.PI/180+0.06;}rtb=!rtb;material=new TextureMaterial(textureResource);mesh.setMaterialToAllSurfaces(material);mesh1.setMaterialToAllSurfaces(material);mesh2.setMaterialToAllSurfaces(material);}}
}

代码简陋,里面嵌入模型与贴图在Alternativa3D官方demo中找,或用自己的。



我实现这个立体效果时,想到了立体效果该是两个摄像机拍一个物体,或舞台之类。再让左眼与右眼分别看两个摄像机之图像。两个图像在两个视口,如何混合为一。我没解决,Flare3D应是解决了,观其demo,再截屏。可见

没想出两个视口如何混合在一起输出,据说stage3D图层不支持混合模式。看nVIDIA官网之3D幻境产品介绍,有要求刷新率120的显示器,就想到其可能用交替显示实现左右眼看不同图像。我也用了这个交替渲染的方法。

因咱没有快门式3D眼镜,就用红蓝眼镜将就看看吧 



我的方法截屏是一个图像,没有重叠

不过效果确实不能做啥东西,就是个玩物而已

Alternativa3D也可以!3D立体效果(需要红蓝眼镜)相关推荐

  1. JS 实现3D立体效果的首页轮播图(瞬间让你的网站高大上,逼格满满)

    还是那句话,废话少说,直接上源代码:http://download.csdn.net/detail/cometwo/9387901 <html> <head> <titl ...

  2. 用计算机做出牙膏盒立体效果制作,使用Nuke进行2D转3D立体世界详解案例教程(二):制作3D立体效果...

    三.Nuke 3D Stereography Production 模型制作完成后,接下来可以将其导入Nuke,并开始制作3D立体效果. 3.1导入场景模型 ※步骤1 启动Nuke软件,新建一个项目文 ...

  3. 制作立体图像(上):红蓝眼镜原理

    立体眼镜分为色差式.偏光式等几种 其中色差式还可以再分为红-蓝.红-绿.红-青等,是最简单,但也是效果最差的一种 这里仅介绍常见的红蓝立体图像 这种方式仅需要一块红蓝眼镜,淘宝上买个很便宜的就可以了, ...

  4. android立体3D效果_PS教程:铝膜气球字制作的完整教程,3D立体效果字体的制作...

    这一篇主要是用PS做一种3D立体字体效果,铝膜气球字体,当然学会之后,举一反三,可以做成其他图案的铝膜气球效果. 铝膜气球在目前的各种庆典,婚庆,庆贺宴席上,用的比较普遍:这个字体效果,后期可以用于室 ...

  5. CSS3实现3D立体效果

    CSS3实现3D效果 1. 涉及到的几个CSS3属性 首先大家需要了解transform属性,主要有平移(translate),缩放(scale),拉伸(skew),旋转(rotate). 这里涉及到 ...

  6. html如何实现立体效果,CSS3实现3D立体效果

    CSS3实现3D效果 1. 涉及到的几个CSS3属性 首先大家需要了解transform属性,主要有平移(translate),缩放(scale),拉伸(skew),旋转(rotate). 这里涉及到 ...

  7. windows之实现3D立体效果的三种方法

    第一种:快捷键:win+tab 另外一种:cmd输入rundll32.exe dwmapi #105 第三种:使用软件bumptop

  8. Echarts柱状图3d立体效果

    import * as echarts from "echarts";//引用echarts import { onMounted } from "vue";/ ...

  9. 红蓝眼镜支持的stero渲染(立体眼镜)

    似乎NVIDIA的显卡驱动就有这个选项.不知道怎么做的.今天试了试自己写的代码.看上去的效果还凑合,就是需要比较长的时间适应. 最近没时间,有时间写个详细的原理吧. 简单说的就是.用两个Camera, ...

最新文章

  1. dataframe 提取月数据_pandas dataframe数据提取的方法
  2. HDB3的matlab编译码
  3. java枚举比较大小写_Spring 3.0 MVC绑定枚举区分大小写
  4. open ai gpt_让我们来谈谈将GPT-3 AI推文震撼到核心的那条推文
  5. 辅助类BinaryTreeNodeLeftChildRightSibling(左孩子右兄弟,二叉树结点)
  6. python会取代前端吗_大家说,python在不远的将来,会不会把java替代,为什么?
  7. 关于idea Tomcat部署的一个小坑
  8. 创建PG全球生态!PostgresConf.CN2019大会盛大召开
  9. 使TextView里面的文字滚动起来
  10. Highcharts:小案例,自定义图片下载路径,中文乱码的解决办法(不足之处,求指点)。...
  11. 新模式卖保健品,怎么做到年入5百万?
  12. 利用ambassador实现container跨主机连接
  13. 聊聊 归一化和标准化
  14. 一文了解NLP领域国内外主要学术组织、会议和论文
  15. C语言编程-9_4 字符统计
  16. AngularJs HelloWorld
  17. 计算机思维论文1万字,计算机思维学论文选题 计算机思维论文题目怎么取
  18. 电子报纸的分析即制作
  19. 电脑连接SONY蓝牙耳机没有声音
  20. 2018 6月底阿里、网易面试经历简单回忆

热门文章

  1. 纯CSS装饰画(给图片加画框)
  2. 微信小程序中图片占满整个屏幕实现方法
  3. nginx 设置反向代理
  4. 设计模式(17):结构型-组合模式(Composite)(2)
  5. PaddleDetection——使用(jpg + xml)制作VOC数据集并建立PD包
  6. 数据分析笔记-物流数据分析(一)
  7. CSS中 解决文字高度上下存在留白的问题
  8. 软件项目管理读书报告
  9. Svg批量转ico软件离线操作转换使用教程
  10. 童年迷思 | 为什么用洗洁精配成的泡泡水吹不出很多泡泡?