X3D实战基础讲座之十一

我们知道,对于Visual C++而言,交互的实现是通过消息映射来进行的。同样,X3D的交互实现也是通过类似的映射机制。用户事件的产生是通过相应的传感器产生的,而ROUTE语句就是相当于事件的映射,它映射到另一个输入事件中。

X3D中,用户事件的传感器有:KeySensor(键盘传感器) 、StringSensor(字符串传感器)、TouchSensor(触摸传感器)、PlaneSensor(平移传感器) 、SphereSensor(绕点旋转感器)和CylinderSensor(Y轴旋转传感器)等。由于BS浏览插件对X3D新增的KeySensor和StringSensor节点的支持不够好,故这里暂不讨论。

一、TouchSensor(触摸传感器)节点

TouchSensor(触摸传感器)节点产生基于定点输入设备(通常是鼠标)的事件。这些事件表明用户是否正在点选某个几何体和用户在什么地方,以及在什么时候按了定点设备的键。它的主要域或事件有:

description -- 这个节点功能的文字提示。

enabled -- 设置传感器节点是否有效。默认值为True。

isActive -- 当点击或移动鼠标(指点设备时)发送事件。按下鼠标主键时isActive=True, 放开时

isActive=False。

isOver -- 当指点设备移动过传感器表面时发送事件。

hitPoint_changed -- 事件输出在子节点局部坐标系统点击点的定位。

hitNormal_changed -- 事件输出了点击点的表面的法线向量。

hitTexCoord_changed -- 事件输出了点击点的表面的纹理坐标。

touchTime -- 当传感器被指点设备点击时产生时间事件。

需要说明的是:

(1) 若定点设备未指向传感器的兄弟几何体,而用户开始将定点设备移到传感器的兄弟几何体时,传感器将产生一个isOver事件,并将其值设置为True;相反,若定点设备已经指向传感器的兄弟几何体,此时用户将定点设备移出传感器的兄弟几何体,传感器将产生一个isOver事件,并将其值设置为False。

(2) 当用户将定点设备从几何体的一点移动到另一点时,传感器将发送一系列事件: hitPoint_changed、hitNormal_changed、hitTexCoord_changed,分别表明用户所指的位置、该点的法向量和纹理坐标。

(3) 当用户点击被TouchSensor监视的对象时,传感器将产生值为True的isActive事件;而当用户释放定点设备的键时,传感器将产生isActive为False的事件。

(4) 若用户在指向几何体时按下鼠标键,然后在仍然指向这个几何体(或又回到这个几何体)时释放鼠标键,传感器将要发送一个touchTime事件,表明键被释放的时间。可以使用这一事件来模拟许多常用的用户接口(如只有在用户点击和释放定点设备按键时才产生的动作)。

下面举两个例子来说明:

时间: 2024-10-18 23:49:46

X3D实战基础讲座之十一的相关文章

X3D实战基础讲座之五

在X3D场景空间中,每一个造型都有其空间坐标,通过修改空间坐标系就可以使该造型在场景空间中移动.旋转和缩放等. X3D提供Transform节点来进行造型的几何变换,该节点的主要属性如下表所示: 属性 含义 默认值 使用说明 translation 平移 0 0 0 将几何体平移到指定的空间点位置 rotation 旋转 0 0 1 0 前3个值是空间坐标点,该点和原点相连的线为旋转轴,第4个值为旋转角度(以弧度为单位) center 操作基点 0 0 0 指定一个空间点作为几何变换的基点 sc

X3D实战基础讲座之十二

在X3D中,通过使用程序化的节点Script来嵌入脚本程序.它支持ECMAScript/JavaScript 或 Java语言.这里解释一下什么是ECMAScript,ECMAScript也是一种脚本语言,由Netscape和Microsoft使用开发,它是一种面向对象语言,ECMAScript和DOM一起十分接近于现在对JavaScript和JScript的实现,虽然说是用于网络环境,但它可以用于任何脚本环境中,并且其语法与JavaScript基本相同. 在本讲中,我们先来看一个实例过程,然后

X3D实战基础讲座之十

由于X3D的动画涉及到时间触发器.插值器.事件和路由等概念,因此在本讲中,我们先来看一个简单的示例,然后一步一步深入下去. 一.一个简单的示例 示例的结果如下图所示: 说明:预览后,球来回移动.

X3D实战基础讲座之九

X3D对多媒体的支持是通过这三个节点来实现的:AudioClip(音频数据节点).Sound(音频播放节点)以及MovieTexture(影像纹理节点). 在本讲中,我们先来简单地介绍这三个节点的属性,然后举一些例子分别说明这些节点的使用及音频和视频的播放. 一.音频和视频节点 1.AudioClip(音频数据)节点 AudioClip 一般作为Sound的子节点,分其提供音频数据,其主要属性有: description -- 此节点显示的提示文本. url -- 声音文件的位置.该文件通常是

X3D实战基础讲座之八

第八讲 纹理映射 在前面几讲中,我们是通过Material节点来改变物体的外观特性.这些特性仅仅是一致性的宏观效果,对于物体的某些细节我们还没有涉及到.通过纹理映射和处理可以为物体的表面细节增强表现力.本讲分三个部分来讨论:一是X3D基本纹理节点的使用,二是使用纹理的坐标系统,三是纹理的变换. 一.X3D基本纹理节点的使用 X3D中,提供了PixelTexture(像素纹理).ImageTexture(贴图纹理)和MovieTexture(影像纹理)三个节点.对于MovieTexture(影像纹

X3D实战基础讲座之七

第七讲 光源处理 在X3D场景空间中,可以使用点光源节点(PointLight).平行光源节点(DirectionalLight)和聚光性光源节点(SpotLight)来处理造型物体的光照明亮程度. 本讲就来介绍这三个节点的属性及其使用方法. 一.点光源节点(PointLight) PointLight 是一个点光源,它向所有的方向发射光线.光线照亮所有的几何对象,也不会被几何形体遮挡而形成阴影.其主要属性如下表所示: 属性 含义 默认值 使用说明 on 光源是否开关 True 为True时打开

X3D实战基础讲座之六

在X3D场景空间中,为了能够让浏览者方便地控制自己的观察位置和角度,X3D提供了视点节点Viewpoint.同时为了能以不同方式来浏览,X3D提供了NavigationInfo导航节点. 下面就来介绍这两个节点的使用. 一.Viewpoint节点 Viewpoint节点指明了一个X3D场景空间中的观察位置和视角方向,其主要属性如下表如下: 属性 含义 默认值 使用说明 description 视点的文字描述 -- 指定的视点描述文字将出现在其快捷菜单上 position 视点位置 0 0 10

X3D实战基础讲座之四

X3D提供了立方体(Box).圆柱(Cylinder).圆锥(Cone).球体(Sphere)等基本3D造型节点.在本讲中,我们先来简单地介绍这些节点的使用,然后再来介绍节点的编组和节点的重复使用方法. 一.立方体Box 构造的代码如下: 说明:Box节点的主要属性是size,用来确定长度(x方向).高度(y方向)和宽度(z)方向的大小.这里是定义一个长为2,宽和高均为1的立方体. 结果如下图所示. 二.圆柱体Cylinder 代码如下: 说明:Cylinder节点的主要属性有height(高度

X3D实战基础讲座之三

在本讲中,我们将介绍如何点.线及其基本2D图形的创建和构造,其中还简单地介绍了X3D的坐标系. 一.点及点的坐标 在X3D的场景中设置物体需要有明确的坐标.在同一个场景中,有一个统一的坐标系.这个坐标系是一个右手坐标系,在初始时(即观察者没有移动位置和改变视角),该坐标系的X轴为沿屏幕水平向右,Y轴为沿屏幕垂直向上,Z轴为从屏幕指向用户. 在X3D中,点的坐标是(x, y, z),坐标的单位是逻辑单位,即是X3D的VRML单位,由于它所显示的图形是按比例进行的,因此你可以把单位当成mm.在指定坐