查看: 2261|回复: 9
打印 上一主题 下一主题

[电商] 《掌握x3d》系列教程第五节

[复制链接]

1096

主题

1

听众

1万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
17782
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2011-12-26 15:21:38 |只看该作者 |倒序浏览
主要内容:编程动画


动画流程


自动移动的方块
添加Box

<Transform DEF="Ball" translation="0 0 0" >

<Box size="0.4 0.4 0.4"/>

</Transform>

添加时间

<TimeSensor DEF="Clock" cycleInterval="4" loop="true"/>
s cript
此节点中包含若干成员,它可以接收和传出信息。
基本结构

<s cript DEF="Name">

……

</s cript>
<s cript DEF="Mover">

对比:

<ositionInterpolator DEF="TreePath" key=" 0.0 0.25 0.5 0.75 1.0" keyValue=" -4.0 0.0 0.0 -2.0 0.0 0.0 0.0 0.0 0.0 2.0 0.0 0.0 4.0 0.0 0.0"/>
set_fraction

value_changed

定义成员:定义接收和传出的成员
<field name='set_fraction' type='SFFloat' accessType='inputOnly'/>
常用数据类型

SFInt32 32位整数

SFFloat 单精度浮点数

SFVec3f单精度浮点数的三维向量

SFTime 时间值

MFString 字符串

SFRotation 旋转量

accessType接受类型
initializeOnly–只能是预设值,不能改变其值

inputOnly–只能接收

outputOnly–只能传送

inputOutput –可以是预设值,也能接收和传送

<field name='set_fraction' type='SFFloat' accessType='inputOnly'/>
<field accessType="outputOnly" name="value_changed" type="SFVec3f"/>
s cript
函数

<![CDATA[javas cript:

function 函数名() {

   内容

}]]>

第一行指定使用的语言类型,如javas cript,ecmas cript

<![CDATA[ecmas cript:

function set_fraction() {

value_changed[0] +=0.1;    // X component

value_changed[1] = 0.0;         // Y component

value_changed[2] = 0.0;         // Z component

}]]>


动画流程

事件传递
<ROUTE fromNode="Clock" fromField="fraction_changed"  toNode="Mover" toField="set_fraction" />
    <ROUTE fromNode="Mover" fromField="value_changed"  toNode="Ball" toField="translation" />
改变
function set_fraction() {

value_changed[0] +=0.1;    // X component

value_changed[1] += 0.1;         // Y component

value_changed[2] = 0.0;         // Z component

}]]></s cript>

变量
function set_fraction() {

    var a=5;

value_changed[0] =a;    // X component

value_changed[1] = 0.0;         // Y component

value_changed[2] = 0.0;         // Z component

}]]>
两个Box
<Transform DEF="Ball1" translation="-2 0 0" >

<Box size="0.4 0.4 0.4"/>

</Transform>
<Transform DEF="Ball2" translation="2 0 0" >

<Box size="0.2 0.2 0.4"/>

</Transform>
<TimeSensor DEF="Clock" cycleInterval="4" loop="true"/>

<s cript DEF="Mover">

<field name='set_fraction' type='SFFloat' accessType='inputOnly'/>

<field accessType="outputOnly" name="value_changed1" type="SFVec3f"/>

<field accessType="outputOnly" name="value_changed2" type="SFVec3f"/>

<![CDATA[ecmas cript:
function set_fraction() {

value_changed1[0] +=0.1;

        value_changed2[1] +=0.1;   

}]]></s cript>

<ROUTE fromNode="Clock" fromField="fraction_changed"  toNode="Mover" toField="set_fraction" />
<ROUTE fromNode="Mover" fromField="value_changed1"  toNode="Ball1" toField="translation" />

<ROUTE fromNode="Mover" fromField="value_changed2"  toNode="Ball2" toField="translation" />
抛物线
<Transform DEF="Ball" translation="0 0 0" >

<Box size="0.4 0.4 0.4"/>

</Transform>
<TimeSensor DEF="Clock" cycleInterval= " 3" loop="true"/>

<s cript DEF="Mover">

<field name="set_fraction" type="SFFloat" accessType="inputOnly" />

<field accessType="outputOnly" name="value_changed" type="SFVec3f" />

<field accessType="outputOnly" name="t" type="SFFloat" />

<![CDATA[ecmas cript:

function set_fraction() {

t+=0.1;

value_changed[0] +=0.1;

        value_changed[1] =1.6*t-0.3*t*t;

}]]>

</s cript>

<ROUTE fromNode="Clock" fromField="fraction_changed"  toNode="Mover" toField="set_fraction" />

<ROUTE fromNode="Mover" fromField="value_changed"  toNode="Ball" toField="translation" />

初始值value

<field accessType="outputOnly" name="value_changed" type="SFVec3f" value="-3 0 0"/>

弹簧振子

function set_fraction() {

t+=0.1;

value_changed[0] =2*Math.sin(t);     

}]]>

圆周运动
function set_fraction() {

t+=0.1;

value_changed[0] =2*Math.sin(t);

        value_changed[1] =2*Math.cos(t);

}]]>

螺旋
<field accessType="outputOnly" name="p" type="SFFloat" />
<![CDATA[ecmas cript:

function set_fraction() {

t+=0.1;

        p+=0.01;

value_changed[0] =p*Math.sin(t);

        value_changed[1] =p*Math.cos(t);

}]]>
文字


<Shape>        

<Text DEF="text" string=""/>              

</Shape>     
<TimeSensor DEF="timer" cycleInterval="1" loop="true"/>


<s cript DEF="s cript">

<field accessType="inputOnly" name="set_fraction" type="SFFloat"/>

<field accessType="outputOnly" name="string_changed" type="MFString"/><![CDATA[ecmas cript:
function set_fraction() {

string_changed += ".";

}]]></s cript>


<ROUTE fromField="fraction_changed" fromNode="timer" toField="set_fraction" toNode="s cript"/>

<ROUTE fromField="string_changed" fromNode="s cript" toField="string" toNode="text"/>


显示当前时间
<Shape>

<Text DEF='text'/>

</Shape>

<TimeSensor DEF='refresh' cycleInterval='0.1' loop='true'/>

<s cript DEF='showtime'>

   <field accessType='inputOnly' name='set' type='SFTime'/>

   <field accessType='outputOnly' name='string_changed' type='MFString'/>
<![CDATA[ecmas cript:

function set () {

var today = new Date();

var date = today.toLocaleString();

string_changed= date;

}]]>

</s cript>

<ROUTE fromField='cycleTime_changed' fromNode='refresh' toField='set' toNode='showtime'/>

    <ROUTE fromField='string_changed' fromNode='showtime' toField='string' toNode='text'/>
秒针
<Transform DEF='second'>

       <Shape>

         <IndexedLineSet coordIndex='0 1 -1'>

         <Coordinate point='0 0 0, 0 1.8 0'/>

         </IndexedLineSet>

       </Shape>

</Transform>
<TimeSensor DEF='refresh' cycleInterval='0.1' loop='true'/>

<s cript DEF='set_time'>

        <field accessType='outputOnly' name='second_changed' type='SFRotation'/>

        <field accessType='inputOnly' name='set_second' type='SFTime'/>

        <![CDATA[ecmas cript:
function set_second () {

var today = new Date();

var seconds = today.getSeconds();

second_changed[3] = -(Math.PI/30)*seconds ;

}]]>

</s cript>

<ROUTE fromField='cycleTime_changed' fromNode='refresh' toField='set_second' toNode='set_time'/>

    <ROUTE fromField='second_changed' fromNode='set_time' toField='rotation' toNode='second'/>



分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

168

主题

1

听众

3637

积分

中级设计师

Rank: 5Rank: 5

纳金币
3637
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2011-12-27 13:39:30 |只看该作者
四哥路过,其他闪道!
回复

使用道具 举报

80后    

0

主题

0

听众

26

积分

设计初学者

Rank: 1

纳金币
26
精华
0
板凳
发表于 2011-12-27 13:39:45 |只看该作者
回复

使用道具 举报

0

主题

1

听众

1122

积分

助理设计师

Rank: 4

纳金币
1122
精华
0
地板
发表于 2011-12-27 13:40:04 |只看该作者
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2012-4-3 23:25:12 |只看该作者
不错哦,顶一下......
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

6#
发表于 2012-9-24 23:20:28 |只看该作者
谢谢楼主,真是太实用了
回复

使用道具 举报

462

主题

1

听众

31万

积分

首席设计师

Rank: 8Rank: 8

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

7#
发表于 2012-10-3 23:26:03 |只看该作者
非常感谢,管理员设置了需要对新回复进行审核,您的帖子通过审核后将被显示出来,现在将转入主题
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

8#
发表于 2012-10-12 23:20:14 |只看该作者
不会吧,太恐怖了
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

9#
发表于 2013-2-23 23:19:13 |只看该作者
不错哦,谢谢楼主
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

10#
发表于 2013-3-5 23:28:14 |只看该作者
跑着去顶朋友滴铁
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-20 21:31 , Processed in 0.101199 second(s), 34 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部