⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 第二十一章 空间传感器.txt

📁 VRML虚拟现实开发电子书
💻 TXT
📖 第 1 页 / 共 2 页
字号:
第二十一章 空间传感器
	1、TouchSensor节点用来检测浏览者在VRML浏览窗口中的光标动作,并且输出一些参数来触发和控制动画效果。
		TouchSensor语法
			TouchSensor {
							enable					TRUE	#域值类型	SFBool
							isActive						#输出接口	SFBool
							isOver							#输出接口	SFBool
							touchTime						#输出接口	SFVec3f
							hitPoint_changed				#输出接口	SFVec3f
							hitNormal_changed				#输出接口	SFVec3f
							hitTexcood_changed				#输出接口	SFVec3f
								}

			enable用来设定空间传感器是否处于打开的状态,当域值为TRUE时,这个空间传感器处于打开状态,并且根据浏览者在空间中不同的动作给出相应的输出;而当域值为FALSE时,这个空间传感器处于关闭状态,并不检测浏览者在虚拟世界中的动作,也没有任何的输出。(可以使用事件接口)
			当浏览者在浏览窗口中的可传感的空间造型上按下定点设备(例如:鼠标)时,输出接口isActive中将输出一个FALSE值,同时从touchTime输出接口中将输出当前的绝对时间。并且输出接口hitPoint_changed将输出被单击位置的空间三维坐标值;输出接口hitNormal_changed将输出被单击处的表面法向量值;在输出接口hitTexcood_changed中输出的则是被单击点的贴图坐标值。
			当浏览者在浏览窗口中的光标经过可传感的空间造型时,输出接口isOver就输出一个TRUE值;而当浏览者的光标离开了可传感的空间造型时,输出接口isOver所输出的就是FALSE值。
			
			[isOver输出接口控制.wrl] 是通过TouchSensor节点的isOver输出接口来控制造型的动画效果的,当浏览者的光标在浏览器窗口中经过空间长方体时,该长方体就开始旋转,知道浏览者的光标离开了这个空间造型为止。
			
	2、PlaneSensor节点
		PlaneSensor节点所创建的空间传感器用来检测浏览者在虚拟世界中的动作,并将这些动作转换为适于空间造型的输出,使浏览者像是在一个二维的平面上所观察到的那样。
			PlaneSensor节点语法
				PlaneSensor	{
								enabled					TRUE					#域值类型	SFBool
								autoOffset				TRUE					#域值类型	SFBool
								offset					0.0		0.0		0.0		#域值类型	SFVec3f
								maxPosition				-1.0	1.0				#域值类型	SFVec2f
								minPosition				1.0		1.0				#域值类型	SFVec2f
								isActive										#输出接口	SFBool
								translation_changed								#输出接口	SFVec3f
								trackPoint_changed								#输出接口	SFVec3f
										}

				enable用来设定空间传感器是否处于打开的状态,当域值为TRUE时,这个空间传感器处于打开状态。(同上)(可以使用事件接口)
				当浏览者在浏览窗口中的可传感的空间造型上按下定点设备的按键时,输出接口isActive中将输出一个TRUE值;而当浏览者放开了定点设备的按键时,输出接口isActive中将输出一个FALSE值。当浏览者在浏览器窗口中将光标移动到可传感的空间造型上并且单击时,将在单击的位置上建立一个虚拟的空间平面,这个空间平面将和当前空间坐标系的XY面相平行,并且将单击的位置作为这个空间平面的原点。浏览者在浏览器窗口中按下定点设备的按键并且移动光标时,可传感的空间造型就将在这个平面上产生平移。
				offset域值给出了一个三维的偏移值,也就是空间造型相对于上面的那个虚拟的空间平面坐标原点的偏移值。(可以使用事件接口)
				autoOffset域值用来设置是否在平移中加上offset域值给出的偏移值。当域值为TRUE时将加上这个偏移值,而当域值为FALSE时在平移中将不加上偏移值。(可以使用事件接口)
				minPosition域值和maxPosition域值是用来给出在X轴和Y轴方向上平移量的限制,前者给出最小的平移量限制,而后者给出最大的平移量限制。(可以使用事件接口)
				上面介绍的这几个域值将共同决定最终平移量的大小,而这个平移量将由输出接口translation_changed传送出来。
				
				[在一个有限平面范围内拖动空间造型.wrl] 这个例子中的空间造型就被限制在X-Y平面的一定范围内能被拖动,浏览者可以试着在浏览器窗口中用鼠标拖动黄色的空间正方体。其实现方法就是将PlaneSensor节点所创建的空间传感器translation_changed输出接口输出到Transform编组节点的输入接口set_translation中。
				[多个平移范围传感器的使用.wrl] 为数个空间造型指定相应的平移范围。

	3、SphereSensor节点
			SphereSensor节点所创建的空间传感器用来检测浏览者在虚拟世界中的动作,并将这些动作转换为适于空间造型输出,使浏览者像是在一个转动的球体上观察到的那样。
				SphereSensor节点语法
					SphereSensor {
									enabled					TRUE							#域值类型	SFBool
									autoOffset				TRUE							#域值类型	SFBool
									offset					0.0		1.0		0.0		0.0		#域值类型	SFVec3f
									isActive												#输出接口	SFBool
									rotation_changed										#输出接口	SFVec3f
									trackPoint_changed										#输出接口	SFVec3f
											}
					enable用来设定空间传感器是否处于打开的状态,当域值为TRUE时,这个空间传感器处于打开状态。(同上)(可以使用事件接口)
					当浏览者在浏览窗口中的可传感的空间造型上按下定点设备的按键时,输出接口isActive中将输出一个TRUE值;而当浏览者放开了定点设备的按键时,输出接口isActive中将输出一个FALSE值。当浏览者在浏览器窗口中将光标移动到可传感的空间造型上并且单击时,将在单击的位置上建立一个虚拟的空间球体表面,并且当前空间坐标系原点作为球体的中心点,将单击的位置和空间坐标系原点之间的距离作为轨迹球体的半径。浏览者在浏览器窗口中按下定点设备的按键并且移动光标时,可传感的空间造型就将沿这个轨迹球体表面上产生移动。
					offset域值给出了一个旋转偏移值,也就是空间造型相对于上面的那个虚拟的空间球面中心的旋转值。(可以使用事件接口)
					autoOffset域值用来设置是否在旋转中加上offset域值给出的偏移值。当域值为TRUE时将加上这个偏移值,而当域值为FALSE时在平移中将不加上偏移值。(可以使用事件接口)
					上面介绍的这几个域值将共同决定最终旋转值的大小,而这个平移量将由输出接口rotation_changed传送出来。
				
				[在球面上旋转空间造型.wrl] 一个圆锥体造型,通过SphereSensor节点指定了一个球面的旋转观察方式,其实现方法就是由SphereSensor节点的输出接口rotation_changed来驱动Transform节点的set_rotation输入接口。

	4、CylinderSensor节点
				CylinderSensor节点所创建的空间传感器用来检测浏览者在虚拟世界中的动作,并将这些动作转换为适于空间造型的输出,使浏览者像是在围绕着一根轴旋转一个圆柱体所观察到的那样。
				CylinderSensor节点语法
					CylinderSensor {
									enabled					TRUE							#域值类型	SFBool
									diskAngle				0.262							#域值类型	SFFloat
									autoOffset				TRUE							#域值类型	SFBool
									offset					0.0		1.0		0.0		 0.0	#域值类型	SFVec3f
									maxAngle				-1.0							#域值类型	SFFloat
									minAngle				0.0								#域值类型	SFFloatf
									isActive												#输出接口	SFBool
									rotation_changed										#输出接口	SFVec3f
									trackPoint_changed										#输出接口	SFVec3f
											}

					enable(同上)(可以使用事件接口)
					当浏览者在浏览窗口中的可传感的空间造型上按下定点设备的按键时,输出接口isActive中将输出一个TRUE值;而当浏览者放开了定点设备的按键时,输出接口isActive中将输出一个FALSE值。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -