国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

X3D實戰基礎講座之十一

2019-11-18 15:45:35
字體:
來源:轉載
供稿:網友

  我們知道,對于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事件,表明鍵被釋放的時間。可以使用這一事件來模擬許多常用的用戶接口(如只有在用戶點擊和釋放定點設備按鍵時才產生的動作)。

  下面舉兩個例子來說明:

  示例1:當鼠標處在立方體的時候,就會有一個小球跟隨鼠標移動。

  示例代碼如下:


(圖片較大,請拉動滾動條觀看)

  示例的結果如下圖所示:

X3D實戰基礎講座之十一(圖二)

  說明:需要將觸摸傳感器節點和要觸摸的形體節點放在同一個父節點處。

  示例2:當單擊中間小球時,將打開點光源,照亮四周的兩個球。

  示例代碼如下:

X3D實戰基礎講座之十一(圖三)

  示例的結果如下圖所示:

X3D實戰基礎講座之十一(圖四)

進入討論組討論。

  二、 PlaneSensor(平移傳感器)節點

  PlaneSensor 傳感器節點用于指點設備在平行于Z=0平面上的動作,只要用戶點按、拖動該傳感器的兄弟幾何體,此節點均將拖動(如用戶使用鼠標進行的拖動)解釋為在傳感器的局部xy平面上的變換。其主要域或事件如下:

  description -- 這個節點功能的文字提示。

  enabled -- 設置傳感器節點是否有效。默認值為True。

  minPosition -- 在xy平面內限制當前點向上和向右的translation事件。

  maXPosition -- 在xy平面內限制當前點向下和向左的translation事件。

  offset -- 該域指出相關幾何體被移動后相對于初始點的位置。

  autoOffset -- 指示是否在拖動結束時將當前位置保存在offset中來實現在兩次拖動之間跟蹤當前位置(True表示跟蹤)。若autoOffset值為False,則用戶每次開始新一輪拖動時,被拖動的幾何體都自動先復位到初始位置。

  isActive -- 指示定點設備當前按鈕是否按下。此事件僅當按鈕被按下或釋放時才發出,拖動期間則不生成。

  isOver -- 當指點設備移動過傳感器表面時發送事件。

  trackPoint_changed -- 拖動期間任何給定時刻用戶的定點設備在xy平面上的實際點(忽略 minPosition和 maxPosition)。

  translation_changed -- 拖動期間任何給定時刻用戶的定點設備在xy平面上的鎖定點(受限于minPosition和 maxPosition)。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屏南县| 青海省| 五家渠市| 永昌县| 瓮安县| 奉节县| 侯马市| 万宁市| 页游| 井陉县| 延吉市| 永仁县| 鄂托克前旗| 民和| 边坝县| 体育| 盐边县| 辰溪县| 石首市| 古浪县| 县级市| 青浦区| 故城县| 德兴市| 绿春县| 滁州市| 清镇市| 彭山县| 南岸区| 丰顺县| 红河县| 年辖:市辖区| 陈巴尔虎旗| 孟州市| 贵港市| 武宁县| 玛纳斯县| 通江县| 太谷县| 方城县| 海阳市|