教程中的效果是让鸭子左右不停的转动,先转向左边,再转回来。
先将教程一的内容拷贝一份为教程二,
然后修改helloword.js文件,先添加一个函数:
var timesincelastchange=0;
var y=-0.001;
function spinduck(time){
timesincelastchange+=time;
if(timesincelastchange >=3000){
y = -1*y;
duck.setAngularVel(new Array(0.0,y,0.0));
timesincelastchange = 0;
}
}
第二步在scn.startScene();这句之前添加scn.setUpdateCallback(spinduck);
第三步运行就可以了,很简单吧!
下面说说原理吧,
spinduck函数接收一个数字参数,改参数其实就是一个时间搓,急当前时间与上次更新的时间搓
函数体就是简单的换算
做个简单的实验,看看它为什么会来回不同的转动,当然这个转动一次就是更新一次对象,因此会调用spinduck函数
现在HTML中增加一个<span id="test"></span>
跟着在在spinduck函数中增加一句document.getElementById("test").innerHTML=time,(HTML5好像对象没有innerText属性)
跟着注释掉代码中的duck.setAngularVel,此时是不是认为spinduck函数只会被调用一次?
试试看,结果呢?,结果是那只鸭子不会动,但是你看网页中一个数字一直在变化,说明spinduck函数一直都在被调用
如此可以得出,C3DL的图形实在不停的更新,那是怎么回事呢?
看看源码,找到scene.js文件找到startScene函数,看到什么了?没错,启动后它设置了一个定时器没5毫秒调用一下render函数,
再看看render函数做了些啥事情?thisScn.updateObjects这个函数是更新所有对象。。
改函数里面就调用了spinduck函数。是不是这样?
再看看updateObjects函数,看到了什么,一直以为spinduck是在对象更新后被调用,但其实呢?是在之前被调用了。
至此终于揭开了spinduck为什么一直被调用,但为什么要这样一直去更新对象呢?不清楚,哈哈。。。
今天顺便把C3DL的JS LIB导入了MyEclipse里面方便编辑。
首先要安装spket插件,然后依次打开window->Perference->Spket->JavaScript Profiles,点击new,创建一个名字,然后add lib,随便选择一个
然后点击add folder,选择c3dl JS 文件目录,OK。但是你会发现它只会添加当前目录下的文件,不会添加子目录,怎么办?一个个目录添加?一个简单的方法
首先先写个程序遍历c3dl js下的所有文件,
并输出为include 'E:\\WebGL\\canvas3d\\c3dl2.1\\actors\\actor.js';这样的格式,一个文件一行
然后保存好,并把\替换成\\
然后打开你的工程目录\.metadata\.plugins\com.spket.js\profiles.xml,打开找到刚刚创建的名字,然后将所有的文件路径添加进去。
好然后保存,重启MyEclipse,然后打开JS文件的时候,用右键选择Spket JavaScript Editor,就可以了。
分享到:
相关推荐
C3预览工具是一款专为模型查看和预览设计的专业软件,主要应用于游戏开发和相关领域,特别是针对“魔域私服”这样的在线游戏环境。它提供了高效、便捷的方式来检查和测试C3模型,确保游戏中的角色、场景和其他元素在...
"转换FBX-c3b-c3t"这个主题涉及到的是将FBX格式的3D模型转换为c3b和c3t两种特定的格式。让我们深入探讨这些格式以及转换过程中的技术细节。 FBX(Filmbox)是Autodesk公司推出的一种3D模型交换格式,广泛应用于3D...
标题 "C3D-lstm_lstmpytorch_c3d论文复现_C3D-lstm" 指涉的是一项在PyTorch框架下对C3D-LSTM模型的实现,这是深度学习领域中用于视频理解的一个重要模型。C3D(Convolutional 3D)是基于3D卷积神经网络的预训练模型...
这样,我们就完成了SpringMVC与C3P0的初步整合。在实际开发中,可能还需要配置事务管理器、AOP切面等,以实现事务控制和其他高级功能。例如,可以使用PlatformTransactionManager接口的实现类,如...
七彩虹C3是一款知名的数字音频播放器,这款设备在2013年3月推出了一个重要的固件更新,版本号为V1.0.0.6。固件升级是电子设备中常见的一种维护和优化手段,它旨在修复已知问题、提升设备性能、增加新功能或者改善...
二、C3P0依赖的jar包 在使用C3p0之前,你需要将以下jar包添加到项目类路径中: 1. c3p0-core.jar:这是C3P0的核心库,包含了所有连接池相关的类和接口。 2. mysql-connector-java.jar:或其他数据库驱动,如...
C3预览工具是一款专为C3模型设计的可视化浏览软件,其主要功能是帮助用户在无需专业建模软件的情况下,便捷地查看和预览C3模型。C3,全称为Computer-aided Conceptual Configuration,是一种用于系统工程、产品设计...
下面我们将深入探讨C3P0的相关知识点。 1. **数据库连接池的概念** 数据库连接池是应用服务器在启动时预先向数据库申请一定数量的连接,然后将这些连接存储在一个池中,当应用需要与数据库交互时,可以从池中获取...
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。标题中的"c3p0-0.9.5.1"指的是C3P0的一个特定版本,即0.9.5.1版。这个版本可能包含了对早期版本的修复、性能优化或新功能...
标题:"c3p0用法步骤" 描述:"这是我学习过程中积累的学习笔记,希望对大家有用" 标签:"c3p0" 知识点详述: C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC连接池的特性,如:自动重连、自动...
C3P0是一个广泛使用的开源Java JDBC连接池,它的全称是Comprehensive Connection Pooling Package。这个库的主要目的是提供数据库连接的高效管理,以优化数据库应用程序的性能和资源利用。C3P0的设计目标是为了满足...
C3P0连接池是Java应用中常用的数据库连接池组件,它允许程序在不关闭物理连接的情况下,管理和重用数据库连接,从而提高了应用程序的性能和效率。C3P0库依赖于其他几个JAR包来实现其功能,包括`c3p0-0.9.2.1.jar`、`...
C3P0是一个开源的Java连接池,全称为Comprehensive Connection Pooling Packages,它提供了对JDBC连接的管理,能够有效地提升数据库操作的性能和稳定性。这个“c3po jar包”是C3P0库的Java归档(JAR)文件,用于集成...
C3P0是一个开源的Java连接池,全称为Comming Soon Connection Pool,它提供了一种在JDBC数据库连接管理中的高效、稳定和扩展性良好的解决方案。C3P0的主要目标是通过提供自动的资源管理和故障恢复功能,来帮助Java...
C3P0连接池是Java开发中常用的数据库连接池组件,它由M-Fenyes创建并维护,旨在提供一个高效、灵活且稳定的数据库连接管理工具。数据库连接池在多线程应用中扮演着重要角色,它能有效地管理和复用数据库连接,避免...
C3P0是一款开源的Java连接池,全称为ComMChange V2 C3P0,由M. J. Franklin创建并维护。它提供了一种高效、灵活且强大的数据库连接管理方式,广泛应用于Java应用程序中,特别是对于那些需要大量并发数据库访问的Web...
**二、c3p0配置** 1. **Maven依赖**:在Maven项目中,需要添加以下依赖来引入c3p0库: ```xml <groupId>com.mchange</groupId> <artifactId>c3p0 <version>0.9.2-pre1 ``` 2. **配置文件**:c3p0的配置...
C3P0是一款开源的Java数据库连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序中,C3P0可以帮助我们更有效地管理和使用数据库连接,避免频繁创建和关闭连接导致的性能损失。下面将...