如何解决Sceneform - 如何添加球体可渲染?
我创建了一个 ModelRenderable
(主节点),我正在尝试使用 Sphere Renderables
上的 LocalPosition
附加 Main node
(子节点)以确保它们保持它们相对于 Main node
的位置。
我遇到的问题是,当通过点击 child nodes
的背面获得 HitTestResult
时,Main node
被放置在错误的位置(根据我的预期) 1}}。
这是一个 gif 演示:
创建主渲染:
private void createAndyRenderable(Node node) {
ModelRenderable.builder()
.setSource(this,Uri.parse(OBJ_NAME))
.build()
.thenAccept(modelRenderable -> {
node.setRenderable(modelRenderable);
node.setLocalPosition(NODE_STARTING_LOCAL_POSITION);
})
.exceptionally(throwable -> {
Toast toast = Toast.makeText(this,"Unable to load renderable"
+ throwable,Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER,0);
toast.show();
return null;
});
}
附加一个 on Tap Handler:
private void addOnTapHandler() {
mPersonNode.setOnTapListener((HitTestResult hitTestResult,MotionEvent motionEvent) -> {
Log.d(TAG,"addOnTapHandler: " + hitTestResult.getPoint());
Color color = new Color(android.graphics.Color.parseColor("#FF7390"));
MaterialFactory.makeOpaqueWithColor(this,color)
.thenAccept(material -> {
Renderable sphere = ShapeFactory.makeSphere(0.05f,Vector3.zero(),material);
Node node = new Node();
node.setParent(hitTestResult.getNode());
node.setLocalPosition(hitTestResult.getPoint());
node.setRenderable(sphere);
});
});
}
在 OnCreate 中使用代码:
mScene = sceneView.getScene();
mPersonNode = new Node();
createAndyRenderable(mPersonNode);
mScene.addChild(mPersonNode);
addOnTapHandler();
编辑:旋转按钮代码
@OnClick(R.id.rotate)
public void rotate() {
if (mCurrentNodeRotatedAngle == 180f) {
Log.d(TAG,"rotate: Called 1 " + mCurrentNodeRotatedAngle);
mCurrentNodeRotatedAngle = 0f;
mPersonNode.setLocalRotation(Quaternion.axisAngle(new Vector3(0f,1f,0f),mCurrentNodeRotatedAngle));
} else {
Log.d(TAG,"rotate: Called 2 " + mCurrentNodeRotatedAngle);
mCurrentNodeRotatedAngle = 180f;
mPersonNode.setLocalRotation(Quaternion.axisAngle(new Vector3(0f,mCurrentNodeRotatedAngle));
}
}
mCurrentPosition = camera.getWorldPosition();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。