纳金网

标题: 《掌握x3d》系列教程第六节 [打印本页]

作者: 愤怒的小猪    时间: 2011-12-26 15:22
标题: 《掌握x3d》系列教程第六节
主要内容:交互
LOD细节级别
LOD此节点会根据视点到物体的距离做出不同的事件,例如根据不同的距离显示不同的图形。
range 层次范围
<LOD range="15">      

<Shape>        

<Box/>  

</Shape>      

<Shape>        

<Text string="hello"/>      

</Shape>         

</LOD>

<LOD range="15 30">      

<Shape>        

<Box/>  

</Shape>      

<Shape>        

<Text string="hello"/>      

</Shape>

<Shape>        

<Cone />

</Shape>      

</LOD>



Collision碰撞
Collision当视点与物体发生碰撞时发生事件
collideTime 发生碰撞的时间事件

<Collision DEF='C' enabled='true'>

<Transform DEF='Mover' translation='0 1 0'>

<Shape>

<Appearance>

<ImageTexture url="2.jpg" />

</Appearance>

<Sphere radius='0.2'/>

</Shape>

</Transform>

</Collision>

<TimeSensor DEF='Clock' cycleInterval='8' />
使起初不会转?

记得以前的TimeSensor?

<TimeSensor DEF='Clock' cycleInterval='8' loop='true' />
通过set_startTime启动TimeSensor


<OrientationInterpolator DEF='Or' key='0, 0.5, 1' keyValue='0 1 0 0.0, 0 1 0 3.14, 0 1 0 6.28'/>
<ROUTE fromNode='C' fromField='collideTime' toNode='Clock' toField='set_startTime'/>

<ROUTE fromNode='Clock' fromField='fraction_changed' toNode='Or' toField='set_fraction'/>

<ROUTE fromNode='Or' fromField='value_changed' toNode='Mover' toField='set_rotation'/>
Anchor超链接


des cription 描述

url 地址


链接到网页
<Anchor des cription="baidu.com" url="http://www.baidu.com">

<Shape>

<Text string="baidu"/>

</Shape>

</Anchor>
保存为1.X3D


链接到X3D文件
<Anchor  url="1.x3d">

<Shape>

<Appearance>

<Material diffuseColor="1 0 0" emissiveColor="0 1 0" specularColor="0 0 1"/>

</Appearance>

<Box size="1 1 1"/>

</Shape>

</Anchor>


Touch接触
TouchSensor接触感应
isActive 鼠标按下时为true

isOver   鼠标划过时发生事件

touchTime鼠标按下时发生时间事件


交互流程


改变文字


<Shape>        

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

</Shape>      

<TouchSensor DEF="touchSensor"/>   

<s cript DEF="s cript">      

<field name="set_active" type="SFBool" accessType="inputOnly" />

<field name="string_changed" type="MFString" accessType="outputOnly" />

<![CDATA[javas cript:

function set_active()

{

  string_changed = "touch";

  }]]>

</s cript>
<ROUTE fromNode="touchSensor" fromField="isActive"  toNode="s cript" toField="set_active" />
<ROUTE fromNode="s cript" fromField="string_changed" toNode="text" toField="string" />
划过便触发
<ROUTE fromNode="touchSensor" fromField="isOver"  toNode="s cript" toField="set_active" />

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


左右移动
按钮 TouchSensor放在中间表示只对某个物体有效
<Transform translation="-2 -2 0">

<TouchSensor DEF="touchSensor1"/>

<Shape>

<Text string="Left"/>         

</Shape>

</Transform>
<Transform translation="2 -2 0">

<TouchSensor DEF="touchSensor2"/>  

<Shape>

<Text string="Right"/>         

</Shape>

</Transform>
移动体
<Transform DEF="M" >

<Shape>

<Appearance>

<ImageTexture url="2.jpg"/>

</Appearance>

<Box/>

</Shape>

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

<field name="set_fraction1" type="SFBool" accessType="inputOnly" />

<field name="set_fraction2" type="SFBool" accessType="inputOnly" />
<field name="value_changed" type="SFVec3f" accessType="outputOnly" />
<![CDATA[javas cript:

function set_fraction1()

{

value_changed[0]-=0.2;
  }

function set_fraction2()

{

value_changed[0]+=0.2;
  }

]]>

</s cript>
<ROUTE fromNode="touchSensor1" fromField="isActive" toNode="s cript" toField="set_fraction1" />

<ROUTE fromNode="touchSensor2" fromField="isActive" toNode="s cript" toField="set_fraction2" />

<ROUTE fromNode="s cript"  fromField="value_changed"  toNode="M" toField="translation" />


陨石游戏
点击发生变化
<Transform DEF="transform">

<Shape>

<Appearance>

<ImageTexture url="3.jpg" />

</Appearance>

<Sphere radius="1" />

</Shape>

</Transform>

<TouchSensor DEF="touchSensor"/>   

<s cript DEF="s cript">   

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

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

<![CDATA[javas cript:

function set_fraction()

{

value_changed[2] -= 10;
  }]]>

</s cript>

<ROUTE fromNode="touchSensor" fromField="isActive" toNode="s cript" toField="set_fraction" />

<ROUTE fromNode="s cript"  fromField="value_changed"  toNode="transform" toField="translation" />
计分
<Transform translation="-2 2 0">

<Shape>

<Text DEF="text"/>         

</Shape>

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

      添加成员
<s cript DEF="s cript">   

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

<field name='set_fraction2' type='SFFloat' accessType='inputOnly'/>
<field name="value_changed" type="SFVec3f" accessType="outputOnly" />

<field name="string_changed" type="MFString" accessType="outputOnly"  value="scores:0"/>

<field name="scores" type="SFInt32" accessType="outputOnly" value="0"/>

function set_fraction()

{

value_changed[2] -= 10;

scores+=10;

  }

function set_fraction2()

{

string_changed="scores:"+scores;

  }

<ROUTE fromNode="Clock" fromField="fraction_changed"  toNode="s cript" toField="set_fraction2" />

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


陨石会移动
时间

<TimeSensor DEF="Clock2" cycleInterval="4" loop="true"/>
成员

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

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

圆周运动

function set_fraction3() {

t+=0.1;

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

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

}
传递

<ROUTE fromNode="Clock2" fromField="fraction_changed"  toNode="s cript" toField="set_fraction3" />


点文字也可以?移动位置
<Transform DEF="transform">

<TouchSensor DEF="touchSensor"/>

<Shape>

<Appearance>

<ImageTexture url="3.jpg" />

</Appearance>

<Sphere radius="1" />

</Shape>

</Transform>

改进:多个球,复杂的移动路径
作者: 四哥    时间: 2011-12-27 13:39
四哥路过,其他闪道!
作者: 有人不让用炮炮    时间: 2011-12-27 13:40

作者: 打死不看十三钗的猪    时间: 2011-12-27 13:42
狂晕
作者: 四哥    时间: 2011-12-27 14:00

作者: 小双子    时间: 2011-12-27 14:06

作者: 小双子    时间: 2011-12-27 14:06

作者: tc    时间: 2012-1-19 23:09
每年短信都很卡,今年提前一点发,就算网络再怎么忙,保准我是第一个,祝福提前到:运气顺顺顺,一切旺旺旺,一年更比一年强!收到有福啦!

作者: tc    时间: 2012-3-1 23:24
不错不错,收藏了

作者: markq    时间: 2012-3-2 20:28
纳金网,一个神奇的地方
作者: 奇    时间: 2012-3-3 23:29
加精、加亮滴铁子,尤其要多丁页丁页

作者: 晃晃    时间: 2012-6-9 23:20
很经典,很实用,学习了!

作者: 菜刀吻电线    时间: 2012-6-17 23:25
提醒猪猪,千万不能让你看见

作者: 菜刀吻电线    时间: 2012-8-16 23:59
真不错,全存下来了.

作者: 晃晃    时间: 2012-11-2 23:28
顶!学习了!阅!

作者: .    时间: 2012-11-8 19:48
wed 3D 纳金网

作者: C.R.CAN    时间: 2012-12-4 23:26
好铁多多发,感激分享

作者: 晃晃    时间: 2013-3-10 23:30
谢谢楼主,真是太实用了





欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5