1 install 3dmax Collada plug-in
2 draw a model in 3dmax or download one
3 export the model from 3dmax
4 install PV3D to flex
5 PV3D1.5 ,AS3
refer to code below
room.as
package
{
import flash.display.Sprite;
import flash.display.*;
import flash.events.*;
import mx.controls.Alert;
import flash.net.URLLoader;
import flash.net.URLRequest;
// Import Papervision3D
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.materials.*;
public class Room extends Sprite
{
private var container :Sprite;
private var scene :Scene3D;
private var camera :Camera3D;
private var sphere :Sphere;
private var alphas :Array=new Array(100,100,100);
private var colors :Array=new Array(0x777777,0x111111,0x555555);
private var materials :Array=new Array("lhd-2001-1-0055-1","lhd-2001-1-0055-2","Material__7");
private var complexObject:DisplayObject3D=new DisplayObject3D();
[Embed(source="model/table.DAE", mimeType="application/octet-stream")]
private var MyCollada:Class;
// private var loader:URLLoader = new URLLoader();
// private var request:URLRequest = new URLRequest("model/table.DAE");
public function Room()
{
this.init3D();
this.camera.x = 100;
this.camera.y = 0;
this.camera.z = 0;
this.scene.renderCamera( camera );
// onEnterFrame
this.addEventListener( Event.ENTER_FRAME, loop3D );
}
public function setAlpha(inx:Number,alphaNum:Number):void
{
alphas[inx]=alphaNum;
var child:Collada=complexObject.getChildByName("bed") as Collada;
child.getMaterialsList().getMaterialByName(materials[inx]).fillAlpha=alphaNum;
this.scene.renderCamera( camera );
}
public function setColor(inx:Number,colorNum:Number):void
{
colors[inx]=colorNum;
var child:Collada=complexObject.getChildByName("bed") as Collada;
child.getMaterialsList().getMaterialByName(materials[inx]).fillColor=colorNum;
this.scene.renderCamera( camera );
}
private function init3D():void
{
this.container = new Sprite();
addChild( container );
this.container.x = 320;
this.container.y = 240;
this.scene = new Scene3D( container );
this.camera = new Camera3D();
this.addRoom();
// loader.load(request);
// loader.addEventListener(Event.COMPLETE, onComplete);
// loader.addEventListener(Event.ACTIVATE, onActive);
}
private function addRoom():void
{
// addFloor();
// addWall();
addBed();
// complexObject.yaw(10);
this.scene.addChild( complexObject );
}
private function addFloor():void
{
var material:ColorMaterial = new ColorMaterial();
material.fillColor = 0xFF0000;
material.doubleSided = true;
material.fillAlpha = 1.0;
material.lineAlpha = 0;
material.lineColor = 0x000000;
var floor:Cube=new Cube(material,500,500,10);
floor.x=0;
floor.y=-100;
floor.z=0;
complexObject.addChild( floor );
//complexObject.addChild( new Cube(new ColorMaterial(0x00ff00),200,200,100) );
}
private function addWall():void
{
var material:ColorMaterial = new ColorMaterial();
material.fillColor = 0x0000FF;
material.doubleSided = true;
material.fillAlpha = 1.0;
material.lineAlpha = 0;
material.lineColor = 0x000000;
var wall:Cube=new Cube(material,500,10,200);
wall.x=0;
wall.y=0;
wall.z=-250;
wall.rotationY=90;
complexObject.addChild( wall );
}
private function addDoor():void
{
var material:ColorMaterial = new ColorMaterial();
material.fillColor = 0x0000FF;
material.doubleSided = true;
material.fillAlpha = 1.0;
material.lineAlpha = 0;
material.lineColor = 0x000000;
var door:Ase=new Ase(material,"model/door.ase");
// door.scaleY=0.05;
// door.scaleZ=0.1;
// door.x=0;
// door.y=0;
// door.z=-250;
// door.rotationY=90;
complexObject.addChild( door );
}
private function addBed():void
{
// var material:BitmapFileMaterial=new BitmapFileMaterial("images/11408839842840.jpg");
var mlist:MaterialsList=new MaterialsList();
// mlist.addMaterial(material,"lhd-2001-1-0055-2");
//mlist.addMaterial(new BitmapFileMaterial("images/RadioButton.png"),"lhd-2001-1-0055-1");
for (var i:uint=0;i
room3d.mxml 代码
- xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()">
- <mx:HDividedBox x="19" y="19" width="100%" height="100%">
- <mx:Panel width="250" height="100%" layout="absolute">
- <mx:ColorPicker id="color1" x="57" y="35" width="66" change="colorChange(event)"/>
- <mx:Label x="8" y="35" text="台面色" width="51"/>
- <mx:ColorPicker id="color2" x="57" y="76" width="66" change="colorChange(event)"/>
- <mx:Label x="10" y="76" text="茶几腿"/>
- <mx:Label x="10" y="120" text="轮子"/>
- <mx:ColorPicker id="color3" x="57" y="120" width="66" change="colorChange(event)"/>
- <mx:HSlider id="alpha1" x="131" y="36" width="66" minimum="0" maximum="1" value="1" change="alphaChange(event)"/>
- <mx:HSlider id="alpha2" x="131" y="81" width="66" minimum="0" maximum="1" value="1" change="alphaChange(event)"/>
- <mx:HSlider id="alpha3" x="131" y="126" width="66" minimum="0" maximum="1" value="1" change="alphaChange(event)"/>
- <!---->mx:Panel>
- <mx:Canvas id="drawCanvas">
-
- <!---->mx:Canvas>
- <!---->mx:HDividedBox>
- <mx:Script>
- <!---->
- <!---->mx:Script>
- <!---->mx:Application>
- table.rar (30.1 KB)
- 描述: dae file of the table model
- 下载次数: 102
分享到:
相关推荐
本篇将深入探讨"Flash颜色变换程序"这一主题,它是一个针对Flash平台的学习小程序,旨在帮助用户理解和掌握如何在Flash中进行颜色处理。 Flash的颜色变换功能是其强大特性之一,允许开发者通过编程或直接在舞台上...
例如,可以创建一个3x3或4x4的颜色矩阵,将它与每个像素的RGB或ARGB向量相乘,实现颜色的整体调整。 7. **性能优化**:由于图像处理通常涉及大量像素操作,性能优化至关重要。使用`LockBits()`和unsafe代码块可以...
"色彩变换MATLAB程序"就是一个这样的应用实例,它允许用户在MATLAB环境中对彩色图像进行操作,并且能够方便地转化为C语言程序,以便在不同平台上运行。 色彩变换通常基于不同的色彩空间模型,如RGB、HSV、CMYK等。...
综上所述,"iPhone色彩变换小程序"将涵盖颜色的创建、渐变、动画、选择器和混合等多个方面,对初学者来说是一个很好的实践平台,能够帮助他们建立起对iOS色彩处理的全面认识,并提升实际编程技能。通过学习和实践这...
首先清除颜色缓冲区,然后定义一个四边形并应用变换。`glPushMatrix()`和`glPopMatrix()`用于保存和恢复当前的模型视图矩阵,这样可以避免对后续绘制的几何体产生意外影响。`glRotatef()`函数执行旋转,这里的参数`...
通常,你需要为旋转工具指定一个初始位置和旋转轴,之后通过调用旋转方法并传入旋转角度来更新模型的视角。最后,更新渲染窗口以看到变化。 6. **与Mimics和其他三维建模软件的对比**: Mimics是一款强大的医学...
旋转变换是指在二维或三维空间中,将图形绕着一个点(通常是原点)进行旋转的操作。在OpenGL中,旋转操作通常使用`glRotatef()`函数完成。该函数接受四个参数,分别是旋转角度、x轴旋转分量、y轴旋转分量和z轴旋转...
本项目中的"用easyx画的一个颜色空间"是利用EasyX库创建的一个可视化工具,帮助用户理解和探索颜色的不同表示方式,特别是RGB颜色模型。下面我们将深入探讨RGB颜色空间以及EasyX库的相关知识。 RGB(Red, Green, ...
1. **OpenGL基础知识**:OpenGL是一个基于管线模型的图形库,其工作流程包括顶点处理、几何变换、光栅化和像素操作等阶段。了解这些基础概念对于编写高效的OpenGL程序至关重要。 2. **上下文与窗口系统**:在使用...
每个变换都可以表示为一个4x4的矩阵,通过矩阵乘法可以组合多个变换。OpenGL提供了一系列的矩阵操作函数,如glRotatef、glTranslatef和glScalef,它们会更新当前的模型观察矩阵(Modelview Matrix),影响后续绘制的...
2. **齐次坐标系统**:为了方便地进行变换,三维图形通常使用齐次坐标系,其中每个点都有一个额外的w分量,通常为1。这样,矩阵可以同时处理点和向量,并允许通过简单的矩阵乘法实现变换。 3. **几何变换**: - **...
《直线取色器根据滑动变换颜色》是一个与图形用户界面和颜色处理相关的程序,它允许用户通过滑动操作在直线上选取不同的颜色,并实时观察颜色的变化。这个程序可能适用于设计、绘画或色彩分析等场景,为用户提供了一...
这个实验报告“RGB颜色模型算法(颜色渐变立方体)”深入探讨了如何利用RGB模型创建颜色渐变效果,并构建了一个三维的颜色立方体。 在数据及结构分析部分,实验可能会首先介绍RGB颜色空间的数学基础,每个颜色由三...
本资源显然提供了一个示例,名为"Example044-使用颜色再变换表",可能是通过C#语言实现的。C#是.NET框架的主要编程语言,广泛用于ASP.NET Web应用程序开发。 颜色再变换表通常涉及图像处理,它涉及到创建一个映射表...
"txt文本阅读器 实现字体颜色改变和文本背景变换"这个项目是一个专注于增强用户阅读体验的简易应用,它允许用户自定义文字的颜色和背景颜色,尽管目前还无法调整字体大小,但开发者正在进行相关改进。 在实现这个...
OpenGL 3D 旋转模型是基于C++编程语言...对于想要深入学习OpenGL或图形学的人来说,这是一个很好的起点,可以在此基础上添加更多的特性和交互,如用户交互、光照模型、纹理贴图等,进一步提升3D渲染的复杂性和真实性。
2. **加载OBJ模型**:加载OBJ文件通常需要一个解析器来读取文件内容并将其转化为程序可处理的数据结构。解析器会遍历文件,提取顶点、法线、纹理坐标和面信息,并存储在内存中的数据结构如数组或列表中。 3. **绘制...