Sandy3D官方教程中文翻译.doc_第1页
Sandy3D官方教程中文翻译.doc_第2页
Sandy3D官方教程中文翻译.doc_第3页
Sandy3D官方教程中文翻译.doc_第4页
Sandy3D官方教程中文翻译.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Sandy3D 官方教程中文翻译三(安装)设置CS3 + Sandy 开发环境为了运行下面教程中的代码你必须做两件事情: 安装Adobe Flash CS3 下载Sandy 3.0 源文件我略去了CS3的安装, 因为如果你没有CS3我想你不会看这篇文章下面我直接跳到Sandy的设置部分.获得最新版本的Sandy你有两个方法得到Sandy的源文件拷贝: 下载Sandy的源压缩文件 或者使用SVN客户端与开发团队的源文件夹进行同步如果你是个开发新手, 我建议你下载压缩包并解压文件, 如果你是个专业的开发人员, 我敢肯定你知道SVN客户端是什么东西, 另外你可以看视频教程设置Sandy不管怎样, 你得有一个有所有源代码的Sandy文件夹(如果你喜欢挖掘所有API的细节描述, 我建议你去下载API文档). 为了让CS3能找到Sandy库, 你不得不做选择: 将Sandy文件夹放到你文档类(Document Class)的工作目录下(稍后我会解释什么是Document Class) 将Sandy文件夹放到一个专用目录下,并且让CS3指向该目录。你可以按照如下步骤来完成该目标: o 在CS3 IDE中选择 编辑(Edit)属性(Preferences). o 选择第二个选项Action Script, 接着点击 Action Script 3.0 Setting.o 使用+按钮在类路径(Classpath)中添加新入口,并指向Sandy库所在的目录. 注意:记得指向sandy目录的父目录, 而不是sandy目录, 否则无法工作。下面的截图应该能帮你正确的设置CS3现在你应该准备好学习新的课程了Sandy3D 官方教程中文翻译四(3行代码教程)这个课程里, 我将想你展示一种方法仅用3行代码来创建你的第一个Sandy 3D程序。看代码:import sandy.core.Scene3D; import sandy.core.scenegraph.*; import sandy.primitive.*; / - creation of the scene. You give it a container, a camera and a root group to add your object into. var scene:Scene3D = new Scene3D( myScene, this, new Camera3D( 550, 400 ), new Group(root) ); / - you add an object to the scene youve just created scene.root.addChild(new Sphere( mySphere ) ); / - and you ask the scene to render scene.render();好吧,确实是6行代码, 但是其中3句是import语句, Sandy实际上是不处理它们的。如果你正确地设置了你的Flash CS3环境,应该能得到下图所示的网格球。喔,太棒了,你在Flash里用Sandy做的第一个3D物体.给刚才的球贴图我猜你现在很想知道怎么给刚才那个球体贴个图。编译这个例子前, 请在你的Flash 资源库(files library)中导入一个位图。然后打开这个位图的属性检查框,设置它的Linkage Class名为Texture。import sandy.core.Scene3D;import sandy.core.scenegraph.*;import sandy.primitive.*;import sandy.materials.*; / - creation of the scene. You give it a container, a camera and a root group to add your object into.var scene:Scene3D = new Scene3D( myScene, this, new Camera3D( 550, 400 ), new Group(root) );var sphere:Sphere = new Sphere(mySphere);/ Texture must match the name of the Linkage Class set for a bitmap in the FLA files librarysphere.appearance = new Appearance( new BitmapMaterial( new Texture(0,0) ) );/ - you add an object to the scene youve just createdscene.root.addChild( sphere );/ - and you ask the scene to renderscene.render();好, 最后我们应该看到类似下图的影片:Sandy3D 官方教程中文翻译五 (简单基元:立方体)简单立方体教学目标我们这节课将展示如何使用简单基元(simple primitive):立方体。其他教程将展示如何使用其他的基元(primitive)。在开始教程之前,我们将采用代码策略(code strategy), 对我来讲意味着我们需要一种方法来写出我们的代码。为了实现这个目标 我会遵循Petit给的建议。基本来讲就是这些意思: 类的构造方法中创建摄像机(Camera)和场景(Scene) 我们用一个名为createScene()的私有方法来创建所有的对象 添加一个事件监听(EventListener)来处理渲染和用户交互我们所有的课程都将会使用类似的方法。怎么做设置我们需要定义两个类: 一个叫 Example001.fla, 另一个叫Example001.as。 你可以在附件中找到这两个文件。example001.rar第一个文件是个控制帧频、场景大小和连接文档类(Document class)等基本信息的CS3 对象。第一个文件只有有两个重要的东东要设置: 场景的大小和文档类(Document class)的名称。我们将场景设为: 300px X 300px, 而文档类(Document class)将设为 Example001(没有后缀 .as)。AS代码本节中我们贴出AS代码作为参考, 代码的解释在后面一段中.package import flash.display.Sprite; import flash.events.*; import sandy.core.Scene3D; import sandy.core.data.*; import sandy.core.scenegraph.*; import sandy.materials.*; import sandy.materials.attributes.*; import sandy.primitive.*; public class Example001 extends Sprite private var scene:Scene3D; private var camera:Camera3D; public function Example001() camera = new Camera3D( 300, 300 ); camera.z = -400;var root:Group = createScene(); scene = new Scene3D( scene, this, camera, root ); addEventListener( Event.ENTER_FRAME, enterFrameHandler ); private function createScene():Group var g:Group = new Group(); var box = new Box( box,100,100,100); box.rotateX = 30; box.rotateY = 30; g.addChild( box ); return g; private function enterFrameHandler( event : Event ) : void scene.render(); 解释代码我们来看看这些代码都做些什么:首先是package的声明。现在我们不管它package .导入需要的package 紧接着是一段导入Sandy和Flash类的代码。导入Sandy的package以后程序就可以识别Sandy的类了(如果你想浏览Sandy的文件夹, 你能找到这些类的源文件). import flash.display.Sprite; import flash.events.*; import sandy.core.Scene3D; import sandy.core.data.*; import sandy.core.scenegraph.*; import sandy.materials.*; import sandy.materials.attributes.*; import sandy.primitive.*;声明 3D场景(Scene3D)和3D摄像机(Camera3D) 构造函数中,我们做的第一件事情就是设置3D摄像机。下一节,我们将会将其向后移动400个像素来获得整个场景的画面。camera = new Camera3D( 300, 300 );摄像机其实就是整个场景的用户观察点。它可以放在场景中, 这样我们可以告诉摄像机往哪里看。(其它课程中, 我们将会讨论摄像机如何工作)。请注意: 这个摄像机的设置 Camera3D(300,300)和我们刚才设置的.fla文件是相同的。确实,通常视野和场景的尺寸应该是相同的。摆放摄像机下面,我们需要放置摄像机, 默认的位置是在点(0,0,0).camera.z = -400;设置相机到 -400 意思是我们从场景原点往后退着走了400像素. 场景原点(Origin of the Scene)总是在视野的中心。创建一个组接下来我们将创建Group对象。var root:Group = createScene();这是我们场景中所有对象的根组。你可以想象这个模型, 我们的所有的物体之间的关系就像一棵树, 每个树枝都可以是一个转换组(transformation group), 一个简单组(simple group)或者一个3D形状的物体。根组(root group)定义在私有方法 createScene()中, 稍后我们将会讨论。接下来我们定义3D场景scene = new Scene3D( scene, this, camera, root );这个例子中我们为构造方法传入了4个变量: 场景名称、场景容器(使用this是因为我们的类继承自AS的基础类:Sprite, 这是一种容器对象), 摄像机用来观察场景我们物体树的根节点。添加事件监听最后一件重要的事情就是我们要添加一个事件监听(event listener)用来渲染场景。addEventListener( Event.ENTER_FRAME, enterFrameHandler );在这个详细的例子中,如果我们不打算做任何事情或是仅仅代替scene.render()命令我们就不需要一个事件监听(event listener); 但是这里, 为了符合良好实践(good practice)我们应当把这个命令放入事件处理函数(event handler)。本课程主要的关注点这个课程的一个主要部分:如何构建场景中的物体? 我们的例子中是一个立方体。在createScene()方法中首要的事情就是定义组元(Group element), 这个组元将会作为一个scene3D对象类型的参数被传回类的构造方法。var g:Group = new Group();构建盒子(Box)我们接着创建一个每边100像素的简单立方体.var box = new Box( box,100,100,100);旋转盒子(Box)接下来我们将盒子绕着X和Y坐标轴各旋转30来产生一个立体的效果。盒子渲染后看起来会像扁平四边形。box.rotateX = 30;box.rotateY = 30;将盒子填入组(Group)中最后,我们得把我们的创造物加入Group中, 否则我们的引擎就不知道该渲染些什么。g.addChild( box );return g;太多的编码了,让我们看看结果.输出效果(译者注:输出效果图片, 丢失不过你可以自己试着编译运行)Sandy3D 官方教程中文翻译六(给基元上色)在立方体上使用彩色材质教学目标本课中, 我们将会了解Sandy中一个非常重要的概念(这也是所有具有渲染功能的软件所拥有的一个概念):材质(Materials)和外观(Appearance)(有时你发现他们的概念与皮肤(skin)差不多)。在Sandy中, 如果你没对你在建的物体声明任何外观, 它将会被简单地渲染为网格(wire frame)外观, 这种外观就是我们之前一直用的。而现在, 我们应该给我们盒子弄些色彩。版本3.0的Sandy(目前)实现了9种材质: 从简单色彩材质(simple color material)到混合动画材质(sophisticated movie material)。我们将会解释最简单的先让用户明白材质是如何工作的, 而稍后我们可能准备一些复杂材质的课程。如何做设置-尽管本课的代码和上课一样, 我仍用一个不同的类名:Example002来组织我们的工作。也就是在CS3中,我们需要创建两个文件(或者复制上节课的文件并重命名): Example002.fla和Example002.as。example002.rar注意其中的很小的改变:文档类(Dcoument class)必须改为 Example002.as 。 .as文件里的类名和构造函数名现在都得是:Example002。AS代码这小节中将会贴出AS代码作为参考, 下节将会对其进行相应的解释。package import flash.display.Sprite; import flash.events.*; import sandy.core.Scene3D; import sandy.core.data.*; import sandy.core.scenegraph.*; import sandy.materials.*; import sandy.materials.attributes.*; import sandy.primitive.*; public class Example002 extends Sprite private var scene:Scene3D; private var camera:Camera3D; public function Example002() camera = new Camera3D( 300, 300 ); camera.z = -400;var root:Group = createScene(); scene = new Scene3D( scene, this, camera, root ); addEventListener( Event.ENTER_FRAME, enterFrameHandler ); private function createScene():Group var g:Group = new Group(); var box = new Box( box,100,100,100); var materialAttr:MaterialAttributes = new MaterialAttributes( new LineAttributes( 0.5, 0x2111BB, 0.4 ), new LightAttributes( true, 0.1) ); var material:Material = new ColorMaterial( 0xFFCC33, 1, materialAttr ); material.lightingEnable = true; var app:Appearance = new Appearance( material ); box.appearance = app; box.rotateX = 30; box.rotateY = 30; g.addChild( box ); return g; private function enterFrameHandler( event : Event ) : void scene.render(); 代码解释本小节, 我们将会关注新的三个变量和给立方体设置两个新属性。创建材质属性我们必须先定义一个叫做 materialAttr的变量。var materialAttr:MaterialAttributes = new MaterialAttributes( new LineAttributes( 0.5, 0x2111BB, 0.4 ), new

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论