我的大学项目需要一些帮助。我有一个气缸,需要它作为一个线圈。例如,如果我触摸圆柱体的表面,它的高度将减小(沿y方向缩放),就好像按下线圈一样,然后当我移开手时,它将恢复到原始尺寸。 这是我到目前为止所得到的,但我仍然有一些我无法解决的问题。
public class Deformation : MonoBehaviour
{
Vector3 tempPos;
private void InteractionManager_SourceUpdated(InteractionSourceUpdatedEventArgs hand)
{
if (hand.state.source.kind == InteractionSourceKind.Hand)
{
Vector3 handPosition;
hand.state.sourcePose.TryGetPosition(out handPosition);
float negXRange = transform.position.x - transform.localScale.x;
float posXRange = transform.position.x + transform.localScale.x;
float negYRange = transform.position.y - (transform.localScale.y / 2);
float posYRange = transform.position.y + (transform.localScale.y / 2);
float negZRange = transform.position.z - transform.localScale.z;
float posZRange = transform.position.z + transform.localScale.z;
float handX = handPosition.x;
float handY = handPosition.y;
float handZ = handPosition.z;
if ((negXRange <= handX) && (handX <= posXRange) && (negYRange <= handY) && (handY <= posYRange) && (negZRange <= handZ) && (handZ <= posZRange))
{
tempPos.y = handPosition.y;
transform.localScale = tempPos;
}
else
{
tempPos.y = 0.3f;
transform.localScale = tempPos;
}
}
}
// Use this for initialization
void Start()
{
tempPos = transform.localScale;
InteractionManager.InteractionSourceUpdated += InteractionManager_SourceUpdated;
}
首先我将圆柱放在一个设置上(例如桌子上的东西)然后我开始变形它。当我在上面描述的变形脚本中评论else部分时,它被缩放并保持稳定而不返回原始大小。它是对称缩放的,因此它的高度从上到下减小,导致圆柱体的底部远离桌子。我需要气缸的底座始终保持稳定并接触下面的工作台。
注意:我使用的是Unity 2017.3.1f1(64位) - HoloToolkit-Unity-2017.2.1.3
提前谢谢。
答案 0 :(得分:0)
1)您是否看到了MRTK 2017.2.1.4版本?它具有一些有用的功能,例如双手调整大小/缩放对象。新MRTK版本中的BoundingBox代码在一个组件中移动和调整大小,它可能是比TapToPlace更好的基础,或者至少显示两种类型的转换如何一起工作。
2)你的物体是什么颜色的? Hololens将黑色渲染为透明,因此请尝试将对象设为亮白色以进行测试。此外,只需仔细检查亮度是否已满(Hololens上的LHS按钮)。最后,检查着色器是MRTK标准着色器。 (同样,2017.2.1.4版本有您可能想要尝试的新着色器代码。)。在没有阳光直射的房间里,它几乎要掩盖你的手。
4)我不确定我是否完全遵循,但枢轴点在这里可能很重要。如果它位于线圈中间的中心(正如我想象的那样),那么当你使线圈变形时,它仍将保持在中心枢轴点的中心位置。 如果您将枢轴点设置到线圈的底部,触摸桌子,您可以缩放并且该点保持在桌面上,顶部完成所有移动。