I want to align 3d Model along some vector, but its not working in cesium. I am using following methods to get modelMatrix for model:
function getModelMatrix(currentPosition,nextPosition) {
var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(currentPosition);
var Va = new Cesium.Cartesian3(1.0, 0.0, 0.0);
var Vw = Cesium.Cartesian3.normalize(Cesium.Cartesian3.subtract(nextPosition, currentPosition));
var Vr = Cesium.Cartesian3.cross(Va, Vw);
var Or = Math.acos(Cesium.Cartesian3.dot(Va, Vw));
var Qr = Cesium.Quaternion.normalize( Cesium.Quaternion.fromAxisAngle(Vr, Or));
var currentModelMatrix = Cesium.Matrix4.multiply(modelMatrix, Cesium.Matrix4.fromRotationTranslation(Cesium.Matrix3.fromQuaternion(Qr), Cesium.Cartesian3.ZERO));
return currentModelMatrix;
}
I am using following code placed model in cesium:
var currentModelMatrix = getBMModelMatrix(new Cesium.Cartesian3(303065.877, 5959040.199, 2246066.299), new Cesium.Cartesian3(293234.532, 6024480.298, 2235076.383));
viewer.scene.getPrimitives().add(Cesium.Model.fromGltf({
url: entity.modelAttributes.model3D,
modelMatrix: currentModelMatrix,
show: (entity.modelAttributes.show ? entity.modelAttributes.show : true),
scale: entity.modelAttributes.scale ? entity.modelAttributes.scale : 1.0
}));
but Model is not align to joining line of currentPosition and nextPosition.
Thanks