對於ARKit來說比較新,我想知道是否有一種方法可以在將3D對象放置到場景中後將其移除。我可以從我的場景中刪除一個對象嗎?
回答
只需使用此功能:
斯威夫特:
node.removeFromParentNode()
Objective-C的
[node removeFromParentNode];
如果您不希望它出現在屏幕上,您需要從場景圖中刪除節點。您需要從其父節點中刪除它。在Apples文檔中的SCNNode - Managing the Node Hierachy中閱讀更多關於它的內容。
是的,我明白了node.removeFromParent()方法。我想要做的是能夠在屏幕上出現後刪除對象 – JHarden13
因此,您想要檢查對象何時第一次渲染? – orangenkopf
要從場景視圖中刪除對象(SCNNode),你可以使用長按手勢。只需在您的viewDidLoad中添加以下代碼即可。
UILongPressGestureRecognizer *longPressGestureRecognizer =
[[UILongPressGestureRecognizer alloc] initWithTarget:self
action:@selector(handleRemoveObjectFrom:)];
longPressGestureRecognizer.minimumPressDuration = 0.5;
[self.sceneView addGestureRecognizer:longPressGestureRecognizer];
然後處理你的手勢識別方法類似下面,
- (void)handleRemoveObjectFrom: (UILongPressGestureRecognizer *)recognizer {
if (recognizer.state != UIGestureRecognizerStateBegan) {
return;
}
CGPoint holdPoint = [recognizer locationInView:self.sceneView];
NSArray<SCNHitTestResult *> *result = [self.sceneView hitTest:holdPoint
options:@{SCNHitTestBoundingBoxOnlyKey: @YES, SCNHitTestFirstFoundOnlyKey: @YES}];
if (result.count == 0) {
return;
}
SCNHitTestResult * hitResult = [result firstObject];
[[hitResult.node parentNode] removeFromParentNode];
}
希望這將幫助你解決你的問題。
謝謝
我得到了一個解決方案,但這也起作用!謝謝! – JHarden13
- 1. 我可以從fetchedResultsController中刪除一個對象而不從db中刪除該對象嗎?
- 2. Threejs將場景中的所有對象從場景中刪除
- 3. OpenCV Java從場景中刪除對象
- 4. 我們可以在黃瓜的另一場景中調用一個場景嗎?
- 5. Corona SDK,從上一個場景中刪除對象
- 6. 我可以刪除loaderinfo.parameters對象中的值嗎?
- 7. 我可以刪除在另一個進程中創建的HBITMAP對象嗎?
- 8. 我可以註冊一個對象嗎?
- 9. 我可以在移動到另一個場景之前釋放場景嗎?
- 10. 我可以刪除xxxxxxxAreaRegistration.cs嗎?
- 11. 我可以刪除flashlogs.txt嗎?
- 12. 我如何從場景中,從另一層刪除一個圖層。 (cocos2d的)
- 13. 我可以僅重繪OpenGL中的一部分場景嗎?
- 14. 將對象從一個場景傳遞到另一個場景
- 15. 我可以從NHibernate會話中分離一個對象嗎?
- 16. 我可以從類方法中獲得另一個對象嗎?
- 17. 如何從three.js中刪除場景中的所有Mesh對象?
- 18. 我可以從我的頁面中刪除此腳本嗎?
- 19. 我可以從我的.config文件中刪除serviceModel標籤嗎?
- 20. 我可以在這個場景中實現隊列嗎?
- 21. 我可以在不刪除任何屬性的情況下刪除對象嗎?
- 22. 如何通過凝視一個對象在一個場景中從一個場景走向另一個場景?
- 23. 我們可以使用空手道從另一個功能調用場景嗎?
- 24. 我可以從字典中刪除單個值嗎?
- 25. 我可以從.htacces中只爲單個頁面刪除.html嗎?
- 26. 我可以從git倉庫中刪除整個分支嗎?
- 27. 我可以將一個對象從Angular2傳遞給MVC5嗎?
- 28. 我可以將一個不可見的邊界框添加到three.js場景嗎?
- 29. 我可以在另一個EJSON對象中嵌入一個EJSON對象嗎?
- 30. 我可以編寫一個posix_time :: ptime對象我自己嗎?
是的,我明白了node.removeFromParent()方法。我想要做的是能夠在屏幕上出現後刪除一個對象 – JHarden13
這種方法允許您在將對象放置到場景中後將其刪除,還有其他我錯過了什麼嗎? –
耶無所謂我只是一個無知的新手,這完美的作品。謝謝! – JHarden13