第三课程:如何使用摄影机?通过摄影机移动来使摄影的对象产生变化,这样会使动画变得容易。因为你不需要改变观察对象的的属性,只是改变摄影机的变化

  1. package
  2. {
  3. import flash.display.Sprite;
  4. import flash.events.*;
  5. import sandy.core.Scene3D;
  6. import sandy.core.data.*;
  7. import sandy.core.scenegraph.*;
  8. import sandy.materials.*;
  9. import sandy.materials.attributes.*;
  10. import sandy.primitive.*;
  11. import sandy.parser.*;
  12. import flash.ui.Keyboard;
  13. public class My3D extends Sprite
  14. {
  15. private var scene:Scene3D;
  16. private var camera:Camera3D;
  17. private var pot:Shape3D;
  18. public function My3D()
  19. {
  20. var parser:IParser = Parser.create("asset/teieraASE.ASE",Parser.ASE );//导入ase格式,让它在flash里面重写绘画
  21. parser.addEventListener( ParserEvent.FAIL, onError );//模型导入失败监听
  22. parser.addEventListener( ParserEvent.INIT, createScene );//初始化监听事件
  23. stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
  24. parser.parse();//加载文件
  25. }
  26. private function onError( pEvt:ParserEvent ):void
  27. {
  28. trace("加载文件错误");
  29. }
  30. private function createScene(p_eEvent:ParserEvent ):void
  31. {
  32. camera = new Camera3D( 500, 300 );//建立摄影机
  33. camera.y = 30;
  34. camera.z = -200;
  35. var g:Group = Group( p_eEvent.group);
  36. pot = g.children[0] as Shape3D;//将模型转为shape3d 类型
  37. pot.x = 0;
  38. var materialAttr:MaterialAttributes = new MaterialAttributes(new LightAttributes( true, 0.2 ) );
  39. var material:Material = new ColorMaterial( 0xE0F87E, 0.9, materialAttr);//添加颜色材质和和光线
  40. material.lightingEnable = true;//开启光线
  41. var app:Appearance = new Appearance( material);//创建一个物体表面
  42. pot.appearance = app;
  43. scene = new Scene3D( "scene", this, camera, g );
  44. addEventListener( Event.ENTER_FRAME, enterFrameHandler );
  45. }
  46. private function enterFrameHandler( event : Event ):void
  47. {
  48. //pot.pan +=3;
  49. scene.render();
  50. }
  51. private function keyPressed(event:KeyboardEvent):void
  52. {
  53. switch (event.keyCode)
  54. {
  55. case Keyboard.UP :
  56. camera.tilt +=2;//上移动
  57. break;
  58. case Keyboard.DOWN :
  59. camera.tilt -=2;//下移动
  60. break;
  61. case Keyboard.RIGHT :
  62. camera.pan -=2;//左移动
  63. break;
  64. case Keyboard.LEFT :
  65. camera.pan +=2;//右移动
  66. break;
  67. case Keyboard.CONTROL :
  68. camera.roll +=2;//旋转
  69. break;
  70. case Keyboard.PAGE_DOWN :
  71. camera.z -=5;//向后移动
  72. break;
  73. case Keyboard.PAGE_UP ://后移动
  74. camera.z +=5;
  75. break;
  76. }
  77. }
  78. }
  79. }

通过键盘控制,使摄影机可以上下左右,前后旋转推进。

转载于:https://www.cnblogs.com/guoyiqi/archive/2008/10/11/2069484.html

Sandy引擎学习笔记:摄影机相关推荐

  1. sandy引擎学习笔记: 创建一个立方体

    问题:如何利用sandy的类库去创建一个立方体呢? 首先,我们要先了解sandy类库的结构 可以看到上面就官方网放出的类库表,有一些很容易理解,像sandy.events 这个和flash.event ...

  2. 【vn.py学习笔记(三)】vn.py事件引擎 学习笔记

    [vn.py学习笔记(三)]vn.py事件引擎 学习笔记 1 时间驱动 2 事件驱动 3 事件引擎工作流程 4 事件引擎结构 4.1 事件队列 4.2 事件处理线程 4.3 事件处理函数字典/通用事件 ...

  3. Nd2d引擎学习笔记

    写在前面: 最近很长一段时间都在致力于移动互联网游戏的开发,安卓,IOS,也包括服务器,最近把服务器搞完以后,接到上级指示,需要服务器兼容手游和页游.所以我就着手准备制作一个页游客户端的DEMO. 一 ...

  4. Volecity模板引擎学习笔记一

    最近项目中用到了volecity模板,这里做一下笔记,学习中...相比较 FreeMarker 而言,Velocity 更加简单.轻量级,但它的功能却没有 FreeMarker强大. 1,首先结合开发 ...

  5. min3d 引擎学习笔记之一

    min3d是一个小巧的android 3d UI引擎, 最近想对其进行深入源码分析, 在深入学习之前, 还是先学会怎么用它吧. min3d是基于opengl es 1.x的, 它封装了opengl 的 ...

  6. 虚幻引擎学习笔记——Month1 Week2

    Day1 学习程序的方法: 先模仿课堂案例,再将其灵活运用到作业中 把每次遇到的问题和错误及相应的解决方法记录下来 程序基础: 变量:程序运行时存储数据的手段(计算机内存中开辟一块存储空间,当程序用到 ...

  7. 虚幻引擎学习笔记——Month1 Week3

    Day1 上周简单总结 创建基础数据类型变量,如布尔.浮点.整型等,系统会自动加默认值.而自己创建的变量系统不会赋默认值,为防止变量为空所带来的问题,需要自己对其赋值 对象类型的变量:既可以存该对象本 ...

  8. Chipmunk-js物理引擎学习笔记

    一.基本概念 空间:在Chipmunk中,空间是所有对象容器.因此,刚体.形状.链接节点等对象都需要添加到空间中.空间控制这些对象的相互作用. 刚体:物理上的刚体指的是在运动和受力作用后,形状和大小不 ...

  9. tesseract-ocr引擎学习笔记

    文章目录 历史 安装 安装tesseract-ocr引擎 安装识别语言包 安装pyocr tesseract的使用 参考链接 历史 光学字符识别(OCR,Optical Character Recog ...

最新文章

  1. linux r服务安装失败,R包:RCurl和curl包在Linux上安装失败
  2. XiaoluD的留言板
  3. 改变MATLAB仿真出来的图的线条颜色表
  4. 如何用pip指令将python包安装到虚拟环境中
  5. nrf51822-提高nordic ble数据发送速率
  6. 实现一个顺序表的建立、查找、插入和删除操作【数据结构实验报告】
  7. php获取文件目录文件名,php获取路径中的文件名的方法有哪些
  8. VMware中安装Centos 7
  9. ADO.NET编程(4)根据条件查询DataTable的值
  10. php 操作xls,php中使用PHPExcel操作excel(xls)文件
  11. python的sift算法_opencv python SIFT(尺度不变特征变换)
  12. android Xmpp+openfire 消息推送 :SASL authentication failed using mechanism DIGEST-MD5
  13. 中医移动医疗_人工智能为中医赋能 上海祉云医疗将再次亮相2021健博会北京展...
  14. Hive安装详细步骤
  15. jquery版本之间的冲突
  16. 计算机英语calculate,计算英语
  17. 【JavaSE系列】 第九话 —— 多态那些事儿
  18. 【算法】3 由招聘问题看随机算法
  19. Linkerd2入门
  20. (一) 一元线性回归方程 梯度下降

热门文章

  1. mysql 7天自动拒单功能,mysql查询最近7天的数据,没有数据自动补0
  2. matlab将模型解封装,模型保护 - MATLAB Simulink - MathWorks 中国
  3. JSP根据状态动态改变数据表格按钮
  4. Android入门(三) | Android 的日志工具 Logcat
  5. MySQL 锁的相关知识 | lock与latch、锁的类型、简谈MVCC、锁算法、死锁、锁升级
  6. leetcode57. 插入区间
  7. 动态规划-背包是否装满
  8. Nginx 配置UDP负载均衡
  9. C++:14---虚继承,虚函数,多态
  10. Python模块(7)-SciPy 简易使用教程