.makeShear(x:Float,y:Float,z:Float):这个 x-X轴上的剪切量。 y-Y轴上的剪切量。 z-Z轴上的剪切量。
将此矩阵设置为剪切变换: 1,y,z,0, x,1,z,0, x,y,1,0, 0、0、0、1 https://threejs.org/docs/#api/en/math/Matrix4
我认为.makeShear可能是解决方案。
------添加----- / /
/
/
有没有人有在AR.js中跟踪矩形标记的经验? 随着我的进步,我在这里头脑风暴。 如果有人能够加入,我很想听听您的想法。
我设法使AR.js跟踪矩形标记,这很好,但是可以理解,因为该标记告诉相机采用的角度和角度,我的three.js场景发生了扭曲/倾斜
有没有一种方法可以编辑相机参数来抵消更改后的视角? 例如,我一直在研究'../ build / ar.js'
//
ARjs.MarkerControls.prototype.updateWithModelViewMatrix = function(modelViewMatrix){
var markerObject3D = this.object3d;
// mark object as visible
markerObject3D.visible = true
if( this.context.parameters.trackingBackend === 'artoolkit' ){
// apply context._axisTransformMatrix - change artoolkit axis to match usual webgl one
var tmpMatrix = new THREE.Matrix4().copy(this.context._artoolkitProjectionAxisTransformMatrix)
tmpMatrix.multiply(modelViewMatrix)
modelViewMatrix.copy(tmpMatrix)
}else if( this.context.parameters.trackingBackend === 'aruco' ){
// ...
}else if( this.context.parameters.trackingBackend === 'tango' ){
// ...
}else console.assert(false)
console.log('markerObject3D ',markerObject3D.matrix);
console.log('modelViewMatrix',modelViewMatrix);
if( this.context.parameters.trackingBackend !== 'tango' ){
// change axis orientation on marker - artoolkit say Z is normal to the marker - ar.js say Y is normal to the marker
var markerAxisTransformMatrix = new THREE.Matrix4().makeRotationX(Math.PI/2)
modelViewMatrix.multiply(markerAxisTransformMatrix)
}
// change markerObject3D.matrix based on parameters.changeMatrixMode
if( this.parameters.changeMatrixMode === 'modelViewMatrix' ){
markerObject3D.matrix.copy(modelViewMatrix)
}else if( this.parameters.changeMatrixMode === 'cameraTransformMatrix' ){
markerObject3D.matrix.getInverse( modelViewMatrix )
}else {
console.assert(false)
}
// decompose - the matrix into .position, .quaternion, .scale
markerObject3D.matrix.decompose(markerObject3D.position, markerObject3D.quaternion, markerObject3D.scale)
// dispatchEvent
this.dispatchEvent( { type: 'markerFound' } );
}