| Server IP : 162.214.74.102 / Your IP : 216.73.216.59 Web Server : Apache System : Linux dedi-4363141.lrsys.com.br 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64 User : lrsys ( 1015) PHP Version : 5.6.40 Disable Function : exec,passthru,shell_exec,system MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/lrsys/public_html/lrsys_apps/marisol/AR/three.js/src/threex/ |
Upload File : |
var THREEx = THREEx || {}
// TODO this is useless - prefere arjs-HitTesting.js
/**
* - maybe support .onClickFcts in each object3d
* - seems an easy light layer for clickable object
* - up to
*/
THREEx.ARClickability = function(sourceElement){
this._sourceElement = sourceElement
// Create cameraPicking
var fullWidth = parseInt(sourceElement.style.width)
var fullHeight = parseInt(sourceElement.style.height)
this._cameraPicking = new THREE.PerspectiveCamera(42, fullWidth / fullHeight, 0.1, 100);
console.warn('THREEx.ARClickability works only in modelViewMatrix')
console.warn('OBSOLETE OBSOLETE! instead use THREEx.HitTestingPlane or THREEx.HitTestingTango')
}
THREEx.ARClickability.prototype.onResize = function(){
var sourceElement = this._sourceElement
var cameraPicking = this._cameraPicking
var fullWidth = parseInt(sourceElement.style.width)
var fullHeight = parseInt(sourceElement.style.height)
cameraPicking.aspect = fullWidth / fullHeight;
cameraPicking.updateProjectionMatrix();
}
THREEx.ARClickability.prototype.computeIntersects = function(domEvent, objects){
var sourceElement = this._sourceElement
var cameraPicking = this._cameraPicking
// compute mouse coordinatge with [-1,1]
var eventCoords = new THREE.Vector3();
eventCoords.x = ( domEvent.layerX / parseInt(sourceElement.style.width) ) * 2 - 1;
eventCoords.y = - ( domEvent.layerY / parseInt(sourceElement.style.height) ) * 2 + 1;
// compute intersections between eventCoords and pickingPlane
var raycaster = new THREE.Raycaster();
raycaster.setFromCamera( eventCoords, cameraPicking );
var intersects = raycaster.intersectObjects( objects )
return intersects
}
THREEx.ARClickability.prototype.update = function(){
}
//////////////////////////////////////////////////////////////////////////////
// Code Separator
//////////////////////////////////////////////////////////////////////////////
THREEx.ARClickability.tangoPickingPointCloud = function(artoolkitContext, mouseX, mouseY){
// THIS IS CRAP!!!! use THREEx.HitTestingTango
var vrDisplay = artoolkitContext._tangoContext.vrDisplay
if (vrDisplay === null ) return null
var pointAndPlane = vrDisplay.getPickingPointAndPlaneInPointCloud(mouseX, mouseY)
if( pointAndPlane == null ) {
console.warn('Could not retrieve the correct point and plane.')
return null
}
// FIXME not sure what this is
var boundingSphereRadius = 0.01
// the bigger the number the likeliest it crash chromium-webar
// Orient and position the model in the picking point according
// to the picking plane. The offset is half of the model size.
var object3d = new THREE.Object3D
THREE.WebAR.positionAndRotateObject3DWithPickingPointAndPlaneInPointCloud(
pointAndPlane, object3d, boundingSphereRadius
)
object3d.rotateZ(-Math.PI/2)
// return the result
var result = {}
result.position = object3d.position
result.quaternion = object3d.quaternion
return result
}