質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VR

VRは、「Virtual Reality」の略。「人工現実感」や「仮想現実」などの意味を持ちます。VRゴーグルなどを装着してコンピュータでつくられた三次元空間を視覚などの感覚を通じ疑似体験できるようにした技術です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

Q&A

1回答

793閲覧

VRMLでオブジェクトを初期位置に戻したい

iwa-901222

総合スコア0

VR

VRは、「Virtual Reality」の略。「人工現実感」や「仮想現実」などの意味を持ちます。VRゴーグルなどを装着してコンピュータでつくられた三次元空間を視覚などの感覚を通じ疑似体験できるようにした技術です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

3DCG

コンピュータの演算により、3次元空間の仮想物体を、2次元平面上で表現する手法である。

0グッド

0クリップ

投稿2022/12/06 13:44

前提

VRMLでセンサノードを使用したプログラムを作成しています。
TouchSensorを正常に動作させたいです。

実現したいこと

  • VRML上でオブジェクト(太陽)をドラックで動かした後、TouchSensorを追加した「赤い球(ボタン)」をクリックすることでオブジェクトが初期位置に戻るようにしたい

発生している問題・エラーメッセージ

エラーが生じているわけではなさそうです。

libfreewrl version 4.0.0 openGL version 4.6.0 Compatibility Profile Context 22.20.02.220623 duktape javascript engine version 20000

該当のソースコード

VRML

1#VRML V2.0 utf8 2 3#ヘッドライトをオフにする. 4NavigationInfo { headlight FALSE } 5 6#点光源を追加(太陽位置) 7PointLight { radius 80 } 8 9#視点を追加する. 10DEF VIEW Viewpoint{ 11 position 0 0 80 12 description "default view" 13} 14 15#背景を追加する. 16DEF BG Background { 17 skyColor 0 0.25 0.5 18} 19 20#公転角Ry(θ)で回転させる. 21DEF EARTH Transform { 22 rotation 0 1 0 0 23 children [ 24 25#半径rの円軌道上に移動させる. 26 DEF EARTH_AXIS_TRANS Transform { 27 translation 30 0 0 28 children [ 29 30#地球と地軸を公転角θと反対角となるRy(-θ)で回転させる. 31 DEF EARTH_BACKSPIN Transform{ 32 rotation 0 1 0 0 33 children [ 34 35#地球と地軸をZ軸に-23.5度 = -0.41015237375[rad]回転させる. 36 DEF EARTH_TILT Transform { 37 rotation 0 0 1 -0.41015237375 38 children [ 39 40#地球と地軸を反時計回りに自転させる. 41 DEF EARTH_ROT Transform { 42 rotation 0 1 0 0 43 children [ 44 45#地球を追加する. 46 DEF EARTH_OBJ Shape { 47 appearance Appearance { 48 material Material { 49 ambientIntensity 0.5 50 diffuseColor 1 1 1 51 } 52 texture ImageTexture { 53 url "----" 54 } 55 } 56 geometry Sphere { radius 3 } 57 } 58 59#地軸を追加する. 60 DEF EARTH_AXIS_OBJ Shape { 61 appearance Appearance { 62 material Material { 63 ambientIntensity 0.5 64 diffuseColor 1 1 1 65 } 66 } 67 geometry Cylinder { 68 radius 0.05 69 height 10 70 } 71 } 72#月の公転 MOON 73 DEF MOON Transform{ 74 rotation 0 1 0 0 75 children[ 76#月を公転軌道上に移動 MOON_AXIS_TRANS 77 DEF MOON_AXIS_TRANS Transform{ 78 translation 5 0 0 79 children[ 80#月の自転 MOON_ROT 81 DEF MOON_ROT Transform{ 82 rotation 0 1 0 0 83 children [ 84#月の追加 MOON_OBJ 85 DEF MOON_OBJ Shape{ 86 appearance Appearance{ 87 material Material{ 88 ambientIntensity 0.5 89 diffuseColor 1 1 1 90 } 91 texture ImageTexture{ 92 url "-----" 93 } 94 } 95 geometry Sphere{ 96 radius 0.8 97 } 98 } 99 ] 100 } 101 ] 102 } 103 ] 104 } 105 ] 106 } 107 ] 108 } 109 ] 110 } 111 ] 112 } 113 ] 114} 115 116#太陽を追加する. 117DEF SUN_OBJ Transform { 118 children[ 119 Shape { 120 appearance Appearance { 121 material Material { 122 ambientIntensity 0.8 123 emissiveColor 1 1 0 124 } 125 } 126 geometry Sphere { 127 radius 10 128 } 129 } 130 DEF SUN_PS PlaneSensor {} 131 ] 132} 133ROUTE SUN_PS.translation_changed TO SUN_OBJ.translation 134 135 136# 赤い球 137Transform { 138 translation 0 -30 0 139 children [ 140 Shape { 141 appearance Appearance { 142 material Material { 143 diffuseColor 1 0 0 144 } 145 } 146 geometry Sphere { 147 radius 1 148 } 149 } 150 DEF Ball_ThS TouchSensor {} 151 ] 152} 153 154# 位置リセットスクリプト 155DEF Sc Script { 156 eventIn SFTime reset 157 eventOut SFVec3f resetPosition 158 field SFVec3f initPos 0 0 0 159 url "javascript:function reset (RES) {resetPosition = initPos;}" 160} 161 162 163ROUTE Ball_ThS.touchTime TO Sc.reset 164ROUTE Sc.resetPosition TO SUN_OBJ.translation 165ROUTE Sc.resetPosition TO SUN_PS.offset 166 167 168#地球と地軸を反時計回りに自転させる.:タイマー 169DEF EARTH_ROT_T TimeSensor { 170 loop TRUE 171 cycleInterval 10 172} 173 174#地球と地軸を反時計回りに自転させる.:キーフレーム毎の回転角 175DEF ROTATION_ROT OrientationInterpolator { 176 key [0, 0.25, 0.5, 0.75, 1 ] 177 keyValue [ 178 0 1 0 0, 179 0 1 0 1.570796325, 180 0 1 0 3.14159265, 181 0 1 0 4.712388975, 182 0 1 0 6.2831853 ] 183} 184 185#地球と地軸を公転角θと反対角となるRy(-θ)で回転させる.:タイマー 186DEF EARTH_BACKSPIN_T TimeSensor { 187 loop TRUE 188 cycleInterval 20 189} 190 191#地球と地軸を公転角θと反対角となるRy(-θ)で回転させる.:キーフレーム毎の回転角 192DEF EARTH_BACKSPIN_ROTATION OrientationInterpolator { 193 key [0, 0.25, 0.5, 0.75, 1 ] 194 keyValue [ 195 0 1 0 0, 196 0 1 0 -1.570796325, 197 0 1 0 -3.14159265, 198 0 1 0 -4.712388975, 199 0 1 0 -6.2831853 ] 200} 201 202#公転角Ry(θ)で回転させる.:タイマー 203DEF EARTH_T TimeSensor { 204 loop TRUE 205 cycleInterval 10 206} 207 208#公転角Ry(θ)で回転させる.:キーフレーム毎の回転角 209DEF ROTATION OrientationInterpolator{ 210 key [0, 0.25, 0.5, 0.75, 1 ] 211 keyValue [ 212 0 1 0 0, 213 0 1 0 1.570796325, 214 0 1 0 3.14159265, 215 0 1 0 4.712388975, 216 0 1 0 6.2831853 ] 217} 218 219#公転角Ry(θ)で回転させる.:タイマー 220DEF MOON_T TimeSensor { 221 loop TRUE 222 cycleInterval 10 223} 224 225#公転角Ry(θ)で回転させる.:キーフレーム毎の回転角 226DEF ROTATION2 OrientationInterpolator{ 227 key [0, 0.25, 0.5, 0.75, 1 ] 228 keyValue [ 229 0 1 0 0, 230 0 1 0 1.570796325, 231 0 1 0 3.14159265, 232 0 1 0 4.712388975, 233 0 1 0 6.2831853 ] 234} 235 236#公転角Ry(θ)で回転させる.:タイマー 237DEF MOON_ROT_T TimeSensor { 238 loop TRUE 239 cycleInterval 10 240} 241 242#公転角Ry(θ)で回転させる.:キーフレーム毎の回転角 243DEF ROTATION2_ROT OrientationInterpolator{ 244 key [0, 0.25, 0.5, 0.75, 1 ] 245 keyValue [ 246 0 1 0 0, 247 0 1 0 1.570796325, 248 0 1 0 3.14159265, 249 0 1 0 4.712388975, 250 0 1 0 6.2831853 ] 251} 252 253ROUTE EARTH_ROT_T.fraction_changed TO ROTATION_ROT.set_fraction 254ROUTE ROTATION_ROT.value_changed TO EARTH_ROT.rotation 255 256ROUTE EARTH_BACKSPIN_T.fraction_changed TO EARTH_BACKSPIN_ROTATION.set_fraction 257ROUTE EARTH_BACKSPIN_ROTATION.value_changed TO EARTH_BACKSPIN.rotation 258 259ROUTE EARTH_T.fraction_changed TO ROTATION.set_fraction 260ROUTE ROTATION.value_changed TO EARTH.rotation 261 262

試したこと

下記のサイトを参考にコードを修正してみました。
サンプル集 - VRML with JavaScript Tutorial

補足情報

  • プログラミング超初心者なので質問以前で何か問題がありましたら、ご指摘いただけますと幸いです。 
  • 自身のブラウザに、VRML Viewer(freeWRL Launcher4.0)をインストールして動作確認をしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

話の腰を折ってしまうかもしれませんが、VRML は現在推奨されていない古い技術となっています。
VRML はブラウザが WebGL に対応していなかった頃の技術で、昨今ではプラグインを用いた 3D 表示は推奨されていません。
three.js といったライブラリで VRML 自体を表示することは可能ですが VRML のイベントには対応していなかったと思います。
VRML の後継としては X3D という規格があります。
X3D を用いた場合の touchSensor の例がありましたのでご参考までに URL をご連携いたします。
X3DOM という JavaScript のライブラリがあり、こちらを用いると X3D 形式のデータおよびイベントを処理できるようです。

■ ボールをクリックしたらアニメーション
https://www.fit.ac.jp/~yamazawa/jikken3/touchSensor.htm
■ X3DOM.
https://github.com/x3dom/x3dom

投稿2022/12/06 23:58

cx20

総合スコア4633

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問