Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
247,32 KB
Nội dung
Chương 4: Tạo chuyển động tương tác VRML 4.3 Các nút nội suy 4.3.1 OrientationInterpolator OrientationInterpolator { eventIn SFFloat # (- ∞, ∞) set_fraction exposedField MFFloat key [] # (- ∞, ∞) exposedField MFRotation keyValue eventOut [] # [-1,1],(- ∞, ∞) SFRotation value_changed } Nội suy tập giá trị quay trường keyValue Phép quay tuyệt đối không gian đối tượng không tích lũy Sự định hướng vị trí cuối đối tượng sau phép quay áp dụng OrientationInterpolator nội suy hai định hướng cách tính tốn đường ngắn mặt cầu đơn vi hai định hướng Nội suy tuyến tính chiều dài cung dọc theo đường Thuộc tính key: Tập giá trị đầu vào keyValue Tập giá trị đầu Trường keyValue phải chứa số phép quay số keyframe trường key Sự kiện set_fraction: Giá trị đầu vào value_changed: Giá trị đầu Hai kiện kết nối với nhau, hoạt động đồng thời Ví dụ #VRML V2.0 utf8 Group { children [ DEF OI OrientationInterpolator { key [ 0.0, 0.1, 0.3, 0.6, 0.8, 1.0 ] keyValue [ 0 0, 0 1.2, 0 -1.57, 0 1.5, 0 3.15, 0 6.28 ] } DEF T Transform { children Shape { geometry Cone {} appearance Appearance { material Material { diffuseColor 0 } } } } DEF TOS TouchSensor {} # Click to start the orientation interp DEF TS TimeSensor { # Drives the interpolator cycleInterval 3.0 # second interp loop } Background { skyColor 1 } ] } ROUTE OI.value_changed TO T.rotation ROUTE TOS.touchTime TO TS.startTime ROUTE TS.fraction_changed TO OI.set_fraction 4.3.2 PositionInterpolator Cú pháp PositionInterpolator { eventIn # (- ∞, ∞) SFFloat set_fraction exposedField MFFloat key [] exposedField MFVec3f keyValue eventOut } SFVec3f value_changed # (- ∞, ∞) [] # (- ∞, ∞) Nội suy tuyến tính danh sách vectơ 3D Thuộc tính key: Tập giá trị đầu vào keyValue: Tập giá trị đầu Trường keyValue phải chứa số giá trị với số giá trị trường key Sự kiện set_fraction: Giá trị đầu vào value_changed: Giá trị đầu Hai kiện kết nối với nhau, hoạt động đồng thời Ví dụ #VRML V2.0 utf8 Group { children [ DEF PI PositionInterpolator { key [ 0.0, 1, 7, 9, 1.0 ] keyValue [ -3 0, 0 0, 20 -50, 0 -100, 0 0, -3 0 ] } DEF T Transform { translation -3 0 children Shape { geometry Cone {} appearance Appearance { material Material { diffuseColor 0 } } } } DEF TOS TouchSensor {} # Click to start the position interp DEF TS TimeSensor { cycleInterval 3.0 } # sec loop Background { skyColor 1 } NavigationInfo { type "EXAMINE" } ] } ROUTE PI.value_changed TO T.translation ROUTE TOS.touchTime TO TS.startTime ROUTE TS.fraction_changed TO PI.set_fraction 4.3.3 ColorInterpolator Cú pháp ColorInterpolator { eventIn # (- ∞, ∞) SFFloat set_fraction exposedField MFFloat key [] exposedField MFColor keyValue eventOut # (- ∞, ∞) [] # [0,1] SFColor value_changed } Nút nội suy tập giá trị MFColor để sinh kiện value_changed SFColor (RGB) Thuộc tính key Tập giá trị đầu vào Được định nghĩa không gian màu RGB keyValue Tập giá trị đầu Số lượng màu trường keyValue phải số keyframe trường key Sự kiện set_fraction Giá trị đầu vào Thực không gian HSV( Hue - Saturation - Value ) value_changed Giá trị đầu Được định nghĩa không gian màu RGB Hai kiện kết nối với nhau, hoạt động đồng thời Ví dụ #VRML V2.0 utf8 Transform { children [ Transform { translation -4 0 children Shape { geometry Box { } appearance DEF A Appearance { material DEF M Material { diffuseColor 2 } } } } Transform { translation 0 children Shape { geometry Sphere { } appearance USE A } } Transform { translation 0 children Shape { geometry Cone { } appearance USE A } } NavigationInfo { type "EXAMINE" } ]} DEF CI ColorInterpolator { key [ ] keyValue [ 2 2 8 8 1 2 ] #6 } DEF TS TimeSensor { loop TRUE cycleInterval startTime } ROUTE TS.fraction_changed TO CI.set_fraction ROUTE CI.value_changed TO M.set_diffuseColor 4.3.4 CoordinateInterpolator Cú pháp CoordinateInterpolator { eventIn # (- ∞, ∞) SFFloat set_fraction exposedField MFFloat key exposedField MFVec3f keyValue eventOut # (- ∞, ∞) [] [] # (- ∞, ∞) MFVec3f value_changed } Nội suy tuyến tính tập giá trị MFVec3f Thuộc tính key: Tập giá trị đầu vào keyValue Tập giá trị đầu Số tọa độ trường keyValue phải bội số số keyframe trường key Bội số nguyên định nghĩa số tọa độ chứa kiện value_change Sự kiện set_fraction: Giá trị đầu vào value_changed: Giá trị đầu Hai kiện kết nối với nhau, hoạt động đồng thời Ví dụ #VRML V2.0 utf8 Group { children [ DEF CI CoordinateInterpolator { key [ 0.0, 1.0 ] keyValue [ -1, -1 -1, 0 1, 0.5 0, -1, -1 -1, 0 1, 3.0 ] } Shape { geometry IndexedFaceSet { coord DEF C Coordinate { point [ -1, -1 -1, 0 1, 0.5 ] } coordIndex [ -1 -1 ] } appearance Appearance { material Material {} } DEF T TouchSensor {} # Click to start the morph DEF TS TimeSensor { # Drives the interpolator cycleInterval 3.0 # second morph loop TRUE } Background { skyColor 1 } ] } ROUTE CI.value_changed TO C.point ROUTE T.touchTime TO TS.startTime ROUTE TS.fraction_changed TO CI.set_fraction 4.3.5 ScalarInterpolator Cú pháp ScalarInterpolator { eventIn # (- ∞, ∞) SFFloat set_fraction exposedField MFFloat key exposedField MFFloat keyValue eventOut # (- ∞, ∞) [] [] # (- ∞, ∞) SFFloat value_changed } Nội suy tuyến tính tập giá trị SFFload Nội suy thích hợp cho tham số xác định cách dùng giá trị điểm thực Ví dụ trường width, radius, intensity Thuộc tính key: Tập giá trị đầu vào keyValue Tập giá trị đầu Trường keyValue phải chứa số giá trị với số giá trị chứa trường key Sự kiện set_fraction: Giá trị đầu vào value_changed Giá trị đầu Hai kiện kết nối với nhau, hoạt động đồng thời Ví dụ: #VRML V2.0 utf8 Group { children [ DEF SI ScalarInterpolator { key [ 0.0, 5, 1.0 ] keyValue [ 0, 9, ] } DEF T Transform { translation -3 0 children Shape { geometry Cone {} appearance Appearance { material DEF M Material { diffuseColor 0 } } } } DEF TOS TouchSensor {} # Click to start the interp DEF TS TimeSensor { loop TRUE cycleInterval 3.0 } # sec loop Background { skyColor 1 } NavigationInfo { type "EXAMINE" } ] } ROUTE SI.value_changed TO M.transparency ROUTE TOS.touchTime TO TS.startTime ROUTE TS.fraction_changed TO SI.set_fraction 4.3.6 NormalInterpolator Cú pháp NormalInterpolator { eventIn SFFloat set_fraction exposedField MFFloat key exposedField MFVec3f keyValue eventOut # (- ∞, ∞) [] # (- ∞, ∞) [] # (- ∞, ∞) MFVec3f value_changed } Nội suy danh sách vectơ normal thiết lập theo quy định trường keyValue Vectơ đầu value_changed phải tập vectơ normal NormalInterpolator phải thực bề mặt mặt cầu đơn vị Có nghĩa giá trị nội suy tuyến tính từ điểm P đến điểm Q mặt cầu đơn vị phải nằm dọc theo cung ngắn (trên mặt cầu đơn vị) kết nối điểm P Q Phân bố đầu vào kết cung có độ dài Nếu P Q đối diện theo đường chéo kết khơng xác định Thuộc tính key: Tập giá trị đầu vào keyValue Tập giá trị đầu Số lượng normal trường keyValue phải bội số số keyframe trường key Bội số nguyên xác định có normal chứa kiện value_changed Sự kiện set_fraction: Giá trị đầu vào value_changed Giá trị đầu Hai kiện kết nối với nhau, hoạt động đồng thời Ví dụ #VRML V2.0 utf8 Group { children [ DEF NI NormalInterpolator { key [ 0.0, 1.0 ] keyValue [ 707 707, 707 -.707, -.707 -.707, -.707 707, 0, 0, 0, -1 0, -1 0, ] } Shape { geometry IndexedFaceSet { coord Coordinate { point [ 1, -1, -1 -1, -1 1, ] } coordIndex [ -1, -1, -1, ] normal DEF N Normal { vector [ 707 707, 707 -.707, -.707 -.707, -.707 707, ] } } appearance Appearance { material Material { diffuseColor 1 } } } DEF T TouchSensor {} # Click to start the morph DEF TS TimeSensor { # Drives the interpolator cycleInterval 3.0 # second normal morph loop TRUE } Background { skyColor 1 } ] } ROUTE NI.value_changed TO N.vector ROUTE T.touchTime TO TS.startTime ROUTE TS.fraction_changed TO NI.set_fraction ... value_changed } Nội suy tuyến tính tập giá trị SFFload Nội suy thích hợp cho tham số xác định cách dùng giá trị điểm thực Ví dụ trường width, radius, intensity Thuộc tính key: Tập giá trị đầu vào keyValue... trị với số giá trị trường key Sự kiện set_fraction: Giá trị đầu vào value_changed: Giá trị đầu Hai kiện kết nối với nhau, hoạt động đồng thời Ví dụ #VRML V2.0 utf8 Group { children [ DEF PI PositionInterpolator... ∞) [] # [0,1] SFColor value_changed } Nút nội suy tập giá trị MFColor để sinh kiện value_changed SFColor (RGB) Thuộc tính key Tập giá trị đầu vào Được định nghĩa không gian màu RGB keyValue