Sandy3D官方教程中文翻译

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Sandy3D官方教程中文翻译三(安装)设置CS3+Sandy开发环境为了运行下面教程中的代码你必须做两件事情:安装AdobeFlashCS3下载Sandy3.0源文件我略去了CS3的安装,因为如果你没有CS3我想你不会看这篇文章——下面我直接跳到Sandy的设置部分.获得最新版本的Sandy你有两个方法得到Sandy的源文件拷贝:下载Sandy的源压缩文件或者使用SVN客户端与开发团队的源文件夹进行同步如果你是个开发新手,我建议你下载压缩包并解压文件,如果你是个专业的开发人员,我敢肯定你知道SVN客户端是什么东西,另外你可以看视频教程设置Sandy不管怎样,你得有一个有所有源代码的Sandy文件夹(如果你喜欢挖掘所有API的细节描述,我建议你去下载API文档).为了让CS3能找到Sandy库,你不得不做选择:将Sandy文件夹放到你文档类(DocumentClass)的工作目录下(稍后我会解释什么是DocumentClass)将Sandy文件夹放到一个专用目录下,并且让CS3指向该目录。你可以按照如下步骤来完成该目标:o在CS3IDE中选择编辑(Edit)→属性(Preferences).o选择第二个选项ActionScript,接着点击ActionScript3.0Setting.o使用+按钮在类路径(Classpath)中添加新入口,并指向Sandy库所在的目录.注意:记得指向sandy目录的父目录,而不是sandy目录,否则无法工作。下面的截图应该能帮你正确的设置CS3现在你应该准备好学习新的课程了Sandy3D官方教程中文翻译四(3行代码教程)这个课程里,我将想你展示一种方法仅用3行代码来创建你的第一个Sandy3D程序。看代码:importsandy.core.Scene3D;importsandy.core.scenegraph.*;importsandy.primitive.*;//--creationofthescene.Yougiveitacontainer,acameraandarootgrouptoaddyourobjectinto.varscene:Scene3D=newScene3D(myScene,this,newCamera3D(550,400),newGroup(root));//--youaddanobjecttothesceneyou'vejustcreatedscene.root.addChild(newSphere(mySphere));//--andyouaskthescenetorenderscene.render();好吧,确实是6行代码,但是其中3句是import语句,Sandy实际上是不处理它们的。如果你正确地设置了你的FlashCS3环境,应该能得到下图所示的网格球。喔,太棒了,你在Flash里用Sandy做的第一个3D物体.给刚才的球贴图我猜你现在很想知道怎么给刚才那个球体贴个图。编译这个例子前,请在你的Flash资源库(file'slibrary)中导入一个位图。然后打开这个位图的属性检查框,设置它的LinkageClass名为Texture。importsandy.core.Scene3D;importsandy.core.scenegraph.*;importsandy.primitive.*;importsandy.materials.*;//--creationofthescene.Yougiveitacontainer,acameraandarootgrouptoaddyourobjectinto.varscene:Scene3D=newScene3D(myScene,this,newCamera3D(550,400),newGroup(root));varsphere:Sphere=newSphere(mySphere);//TexturemustmatchthenameoftheLinkageClasssetforabitmapintheFLAfile'slibrarysphere.appearance=newAppearance(newBitmapMaterial(newTexture(0,0)));//--youaddanobjecttothesceneyou'vejustcreatedscene.root.addChild(sphere);//--andyouaskthescenetorenderscene.render();好,最后我们应该看到类似下图的影片:Sandy3D官方教程中文翻译五(简单基元:立方体)简单立方体教学目标我们这节课将展示如何使用简单基元(simpleprimitive):立方体。其他教程将展示如何使用其他的基元(primitive)。在开始教程之前,我们将采用代码策略(codestrategy),对我来讲意味着我们需要一种方法来写出我们的代码。为了实现这个目标我会遵循Petit给的建议。基本来讲就是这些意思:类的构造方法中创建摄像机(Camera)和场景(Scene)我们用一个名为createScene()的私有方法来创建所有的对象添加一个事件监听(EventListener)来处理渲染和用户交互我们所有的课程都将会使用类似的方法。怎么做设置我们需要定义两个类:一个叫Example001.fla,另一个叫Example001.as。你可以在附件中找到这两个文件。example001.rar第一个文件是个控制帧频、场景大小和连接文档类(Documentclass)等基本信息的CS3对象。第一个文件只有有两个重要的东东要设置:场景的大小和文档类(Documentclass)的名称。我们将场景设为:300pxX300px,而文档类(Documentclass)将设为Example001(没有后缀.as)。AS代码本节中我们贴出AS代码作为参考,代码的解释在后面一段中.package{importflash.display.Sprite;importflash.events.*;importsandy.core.Scene3D;importsandy.core.data.*;importsandy.core.scenegraph.*;importsandy.materials.*;importsandy.materials.attributes.*;importsandy.primitive.*;publicclassExample001extendsSprite{privatevarscene:Scene3D;privatevarcamera:Camera3D;publicfunctionExample001(){camera=newCamera3D(300,300);camera.z=-400;varroot:Group=createScene();scene=newScene3D(scene,this,camera,root);addEventListener(Event.ENTER_FRAME,enterFrameHandler);}privatefunctioncreateScene():Group{varg:Group=newGroup();varbox=newBox(box,100,100,100);box.rotateX=30;box.rotateY=30;g.addChild(box);returng;}privatefunctionenterFrameHandler(event:Event):void{scene.render();}}}解释代码我们来看看这些代码都做些什么:首先是package的声明。现在我们不管它package{...}导入需要的package紧接着是一段导入Sandy和Flash类的代码。导入Sandy的package以后程序就可以识别Sandy的类了(如果你想浏览Sandy的文件夹,你能找到这些类的源文件).importflash.display.Sprite;importflash.events.*;importsandy.core.Scene3D;importsandy.core.data.*;importsandy.core.scenegraph.*;importsandy.materials.*;importsandy.materials.attributes.*;importsandy.primitive.*;声明3D场景(Scene3D)和3D摄像机(Camera3D)构造函数中,我们做的第一件事情就是设置3D摄像机。下一节,我们将会将其向后移动400个像素来获得整个场景的画面。camera=newCamera3D(300,300);摄像机其实就是整个场景的用户观察点。它可以放在场景中,这样我们可以告诉摄像机往哪里看。(其它课程中,我们将会讨论摄像机如何工作)。请注意:这个摄像机的设置Camera3D(300,300)和我们刚才设置的.fla文件是相同的。确实,通常视野和场景的尺寸应该是相同的。摆放摄像机下面,我们需要放置摄像机,默认的位置是在点(0,0,0).camera.z=-400;设置相机到-400意思是我们从场景原点往后退着走了400像素.场景原点(OriginoftheScene)总是在视野的中心。创建一个组接下来我们将创建Group对象。varroot:Group=createScene();这是我们场景中所有对象的根组。你可以想象这个模型,我们的所有的物体之间的关系就像一棵树,每个树枝都可以是一个转换组(transformationgroup),一个简单组(simplegroup)或者一个3D形状的物体。根组(rootgroup)定义在私有方法createScene()中,稍后我们将会讨论。接下来我们定义3D场景scene=newScene3D(scene,this,camera,root);这个例子中我们为构造方法传入了4个变量:场景名称、场景容器(使用this是因为我们的类继承自AS的基础类:Sprite,这是一种容器对象),摄像机用来观察场景——我们物体树的根节点。添加事件监听最后一件重要的事情就是我们要添加一个事件监听(eventlistener)用来渲染场景。addEventListener(Event.ENTER_FRAME,enterFrameHandler);在这个详细的例子中,如果我们不打算做任何事情或是仅仅代替scene.render()命令我们就不需要一个事件监听(eventlistener);但是这里,为了符合良好实践(goodpractice)我们应当把这个命令放入事件处理函数(eventhandler)。本课程主要的关注点这个课程的一个主要部分:如何构建场景中的物体?我们的例子中是一个立方体。在createScene()方法中首要的事情就是定义组元(Groupelement),这个组元将会作为一个scene3D对象类型的参数被传回类的构造方法。varg:Group=newGroup();构建盒子(Box)我们接着创建一个每边100像素的简单立方体.varbox=newBox(box,100,100,100);旋转盒子(Box)接下来我们将盒子绕着X和Y坐标轴各旋转30°来产生一个立体的效果。盒子渲染后看起来会像扁平四边形。box.rotateX=30;box.rotateY=30;将盒子填入组(Group)中最后,我们得把我们的创造物加入Group中,否则我们的引擎就不知道该渲染些什么。g.addChild(box);returng;太多的编码了,让我们看看结果.输出效果(译者注:输出效果图片,丢失不过你可以自己试着编译运行)Sandy3D官方教程中文翻译六(给基元上色)在立方体上使用彩色材质教学目标本课中,我们将会了解Sandy中一个非常重要的概念(这也是所有具有渲染功能的软件所拥有的一个概念):

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功