[X3D-Public] X3DOM: Proximity Sensor

Dark Before Dawn dark.before.dawn at gmail.com
Tue May 10 09:06:44 PDT 2011


Hello :)
is there any way to read out camera position and orientation via 
JavaScript? It seems there is no ProximitySensor or equivalent in X3DOM.

I tried to update the viewport node via JavaScript and keydown Events 
manualy. This kinda works, but there are also some disadvantages like 
manual collission detection.

Thanks in advance :)
Cheers
Darky

Code Snippet:

<html>
<head>
     <script  type='text/javascript'src='http://www.x3dom.org/x3dom/release/x3dom.js  <view-source:http://www.x3dom.org/x3dom/release/x3dom.js>'></script>
     <link  rel="stylesheet"type="text/css"href="http://www.x3dom.org/x3dom/release/x3dom.css  <view-source:http://www.x3dom.org/x3dom/release/x3dom.css>"/>

	<script  type='text/javascript'>
		document.onkeydown = handleKeys;

		function handleKeys(e)
		{
    			var key = (window.event) ? event.keyCode : e.keyCode;
			
			var tmp = ((document.getElementById('vp')).getAttribute('position')).split(' ', 3);
			var t_pos_x = parseFloat(tmp[0]);
			var t_pos_y = parseFloat(tmp[1]);
			var t_pos_z = parseFloat(tmp[2]);
			
			var speed = 0.5;

    			switch(key) // custom movement :)
    			{
       				case 38:
       				document.getElementById('vp').setAttribute('position', '' + t_pos_x + ' ' + t_pos_y + ' ' + (t_pos_z-speed));
       				break;
	
       				case 40:
       				document.getElementById('vp').setAttribute('position', '' + t_pos_x + ' ' + t_pos_y + ' ' + (t_pos_z+speed));
       				break;

       				case 39:
       				document.getElementById('vp').setAttribute('position', '' + (t_pos_x+speed) + ' ' + t_pos_y + ' ' + t_pos_z);
       				break;

       				case 37:
       				document.getElementById('vp').setAttribute('position', '' + (t_pos_x-speed) + ' ' + t_pos_y + ' ' + t_pos_z);
       				break;
    			}
			updatePositionInfoLabel();
		}
	</script>

         <script  type="text/javascript">

	var pos_x = 0.0;
	     var pos_y = 0.0;
	     var pos_z = 0.0;
			
             function updatePositionInfoLabel()
             {
		var tmp = ((document.getElementById('vp')).getAttribute('position')).split(' ', 3);
		pos_x = tmp[0];
		pos_y = tmp[1];
		pos_z = tmp[2];
		document.getElementById('movement').innerHTML = 'Pos: ' + pos_x + ' ' + pos_y + ' ' + pos_z;
             }
         </script>
</head>
<body>
     <x3d  id='xdoc_1'width='400px'height='400px'>

       <scene>
		<navigationInfo  type='"examine" "any"'></navigationInfo>
		<viewpoint  id='vp'position='0 0 5'></viewpoint>
		<transform  id='s_cone1'scale='0.2 0.2 0.2'center='0 0 0'onclick='updatePositionInfoLabel();'>
			<shape>
				<appearance  >
					<material  id='dc_yellow'diffuseColor='yellow'></material>
				</appearance  >
				<cone/>

			</shape>
		</transform>
       </scene>
     </x3d>
     <label  id="movement">Movement</label>
</body>
</html>


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20110510/2e4e22b6/attachment.html>


More information about the X3D-Public mailing list