I have a rubix-like 3d model, with icon on the cube. The problem is, that when you rotate the cube a couple of times, you the text on the icons is upside-down.
What I want is to rotate the icons, accordingly to the rotation of the cube. But I can’t figure out the right formula for the.
Attached is an image which explains the problem. The icons should always face down (like there is gravity).
I’ve tried several things, using scenePosition, inversetransform, calculate angel between Vector3D points, etc. Anyone has an idea how to solve this problem?
var VO:PickingCollisionVO = picker.getViewCollision(nativeStage.mouseX, nativeStage.mouseY, data.VIEW3D);
if(VO != null)
{
var globalPosition1:Vector3D = VO.entity.inverseSceneTransform.transformVector(loader.position);
var globalPosition2:Vector3D = loader.inverseSceneTransform.transformVector(VO.entity.position);
var globalPosition3:Vector3D = loader.inverseSceneTransform.transformVector(VO.entity.scenePosition);
stageIcon.position = loader.inverseSceneTransform.transformVector(VO.entity.scenePosition);
var angle:Number = Vector3DUtils.getAngle(globalPosition3, bol.position);
trace(this, "angle : " + (angle * (180 / Math.PI)));
var radians:Number = Math.atan2(bol.z-VO.entity.z, bol.x-VO.entity.x);
var degrees:Number = radians*180/Math.PI;
VO.entity.rotationX = -degrees;
if(VO.entity.name.indexOf("icoon") != -1)
{
clickOnMesh(VO.entity as Mesh);
}
}