3D可视化技术之Cult3D【实战动画效果小汽车】
来源:互联网 发布:淘宝发货通知短信 编辑:程序博客网 时间:2024/04/29 09:30
废话不多说,直接上代码注释很全….
package cn.com.test;import com.cult3d.Cult3DScript;import com.cult3d.world.CultObject;/** * 该类全局唯一、供Cult3D Designer调用,实现动态交互 * * @ClassName: Assemble * @Description: 此类实现小汽车模型整体的移动,4个轮胎的移动以及整体的停止和4个轮胎的停止 * @author wuran:2269839033@qq.com * @date 2016年1月14日 下午5:13:58 * */public class Assemble implements Cult3DScript { // 在此类中可以调用其他类的方法,供cult3D Designer调用实现动态交互效果 // 此处每个对象name应该与3ds max中制作对应相同 private CultObject object = new CultObject("Car"); // 以下为让3ds里面的Car“动起来” private CultObject object1 = new CultObject("tyre1");// 轮胎1 private CultObject object2 = new CultObject("tyre2");// 轮胎2 private CultObject object3 = new CultObject("tyre3");// 轮胎3 private CultObject object4 = new CultObject("tyre4");// 轮胎4 // 必须实现一个不带参数的构造函数 public Assemble() { } /** * * @Title: Start * @Description: 汽车启动效果方法 * @param @param s 预留参数 * @return void 返回类型 * @throws */ public void Start(String s) { //小汽车整体移动,前3个参数含义:X/Y/Z3个方向移动的距离,第4个参数代表所花费的移动时间 object.translate(0.0f, 100.0f, 0.0f,200000); //轮胎的移动,参数1:转动轴,参数2:转动弧度,参数3:转动时间 object1.rotate(object1.Z, 10,200000); object2.rotate(object2.Z, 10,200000); object3.rotate(object3.Z, 10,200000); object4.rotate(object4.Z, 10,200000); } /** * * @Title: stop * @Description: 汽车整体的停止方法 * @param @param s 预留参数 * @return void 返回类型 * @throws */ public void stop(String s) { object.stopRotation(); object1.stopRotation(); object2.stopRotation(); object3.stopRotation(); object4.stopRotation(); } /** * 析构函数cult3dDestroy()会在Cult3D Viewer关闭时调用,用以释放资源; */ @Override public void cult3dDestroy() { }}
package cn.com.test;import java.awt.Color;import java.awt.Graphics;import com.cult3d.Cult;import com.cult3d.Cult3DScript;import com.cult3d.TextureImage;import com.cult3d.world.Texture;/** * * @ClassName: ChangeColor * @Description: 该类实现车体颜色的改变* @author wuran:2269839033@qq.com * @date 2016年1月15日 下午3:06:16 * */public class ChangeColor implements Cult3DScript,Runnable{ //材质 private static final String TEXTURE_NAME = "MADAROSE"; private Color red = new Color(198, 58, 41); private Color blue = new Color(99, 93, 163); //组成颜色集 private Color[] colors ={red,blue}; private Texture texture; private TextureImage textureImage; private int texttureWidth,texttureHeight; private Graphics graphics;//图表 private volatile boolean loaded = false; private int coloCounter = 0;//计数器 /** * * <p>Title: </p> * <p>Description: 该构造函数用于单独启动一个线程,用于专门渲染车体颜色</p> */ public ChangeColor() { Thread thread = new Thread(this); thread.start(); } public void run(){ texture = new Texture(TEXTURE_NAME); //获取新建纹理的宽度 texttureWidth = texture.getWidth(); //获取新建纹理的高度 texttureHeight = texture.getHeight(); //构建纹理图片 textureImage = (TextureImage) Cult.createImage(texttureWidth,texttureHeight); graphics = textureImage.getGraphics(); loaded = true; } //定义一些Manual事件 public void Red(String s){ switchColor(red); } public void Blue(String s){ switchColor(blue); } public void switchColor(Color color){ graphics.setColor(color); graphics.fillRect(0, 0, texttureWidth, texttureHeight); texture.setTexture(textureImage); } @Override public void cult3dDestroy() { }}
package cn.com.test;import com.cult3d.Cult3DScript;import com.cult3d.world.CultObject;/** * * @ClassName: Door * @Description: 此类用以实现车门的打开和关闭动画* @author wuran:2269839033@qq.com * @date 2016年1月15日 下午2:55:02 * */public class Door implements Cult3DScript{ //获得3ds max的门对象 private CultObject door = new CultObject("Door"); boolean Isopen;//判断门是否打开 //构造函数 public Door() { Isopen = false;//初始化车门没有打开 } /** * * @Title: opclose * @Description: 根据车门开闭状态实现开关车门方法 * @param @param s 设定文件 * @return void 返回类型 * @throws */ public void opclose(String s) { if (Isopen ==false) { //未开 则开 door.rotate(door.Y, 10, 100); //更新门打开状态 Isopen = true; } else { //已开 则关 door.rotate(door.Y, -10, 100); Isopen =false; } } @Override public void cult3dDestroy() { }}
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>car ambition</title> <script language="JavaScript" src="../js/Cult3D.js"></script> <script language="JavaScript"> function triggerRed(){ //此处Red与名为Red的Manual事件名相对应,单机red按钮触发名为red的事件 var success = Cult3D.triggerEvent("Red"); } function enableButtons(refObject){ //让该按钮为激活状态 Cult3D=new Cult3D_Object(refObject); document.myForm.Red.disabled = false; } </script> <script language="JavaScript" for=CultObject event=OnLoadFinished> if(isActiveX()){ alert("isActiveX"); enableButtons(this);//使按钮可用 } </script></head><body> <form name="myForm"> <input disabled name="Red" type="button" value="Red" onclick="triggerRed()"> </form> <object classid="clsid:31B7EB4E-8B4B-11D1-A789-00A0CC6651A8" width="1000" height="600" codebase="http://www.cult3d.com/download/cult.cab#version=5,3,0,212"> <param name="SRC" value="../res/bridge.co" > <embed pluginspage="http://www.cult3d.com/newuser/index.html" width="1000" height="600" src="../res/bridge.co" type="application/x-Cult3D-object" OnLoadFinished="enableButtons('CultEmbed')"> </embed> </object></body></html>
0 0
- 3D可视化技术之Cult3D【实战动画效果小汽车】
- 3D可视化技术之Cult3D
- 利用Java 3D技术播放动画之JMF技术
- 利用Java 3D技术播放动画之JMF技术
- Android动画分析之3D翻转效果
- Android动画分析之3D翻转效果
- Android动画分析之3D翻转效果
- Android动画分析之3D翻转效果
- Android动画之3D翻转效果实现函数分析
- CSS3 3D动画效果
- css3 3D动画效果
- Android酷炫动画效果之3D星体旋转效果
- Qt 数据可视化之3D图形
- Android 3D旋转动画效果
- Android 3D旋转动画效果
- android 实现3D动画旋转效果
- Android 3D旋转动画效果
- Android 3D旋转动画效果
- iOS开发之如何跳到系统设置里的各种设置界面
- 在popupWindow里响应硬件的back按键的事件
- 一筐鸡蛋的问题
- linux下编译c代码时error:undefined reference to sem_init sem_wait 解决方法之一
- 自定义View实现雨点洒落效果
- 3D可视化技术之Cult3D【实战动画效果小汽车】
- iOS开发之如何跳到系统设置里的各种设置界面
- Fragment销毁时replace和add两个方法的区别
- UI性能测试
- python发HTTP post请求上传文件
- 处理多维度变化——桥接模式(二):桥接模式概述
- golang特性摘要及开发常见库
- CSS中外边距叠加问题
- Android进程间通信(IPC)机制Binder简要介绍