Ios iPad的交互式三维模型

Ios iPad的交互式三维模型,ios,swift,3d,scenekit,metal,Ios,Swift,3d,Scenekit,Metal,类似于这个问题 我不想走webview/javascript的道路 我想要这样的东西 http://appserv.kfshrc.edu.sa/Default/Health/Anantomy.aspx 用天然金属或斯威夫特书写的场景 我搜索过github,但没有发现任何东西 这可能吗?通过阅读SDK,我看不出如何激活曲面、边或顶点。如果您想以简单的方式进行激活,我建议使用SceneKit。您可以使用任何在线三维模型制作工具制作人体模型的每个部分,然后将每个部分导出为.dae,并将其导入到Sc

类似于这个问题

我不想走webview/javascript的道路

我想要这样的东西

http://appserv.kfshrc.edu.sa/Default/Health/Anantomy.aspx
用天然金属或斯威夫特书写的场景

我搜索过github,但没有发现任何东西


这可能吗?通过阅读SDK,我看不出如何激活曲面、边或顶点。

如果您想以简单的方式进行激活,我建议使用SceneKit。您可以使用任何在线三维模型制作工具制作人体模型的每个部分,然后将每个部分导出为.dae,并将其导入到SceneKit项目中。SceneKit项目中的默认代码已经实现了您想要的大部分功能,您只需修改它显示的资产(所有文件而不是ship.dae),更改模型的位置以正确排列,并修改handleTap方法,以在已有代码之后的
if hitsresults.count>0
块内的HUD UI中显示文本。基本上,您可以修改代码块,使其看起来像:

if hitResults.count > 0 {
            // retrieved the first clicked object
            let result: AnyObject! = hitResults[0]

            // get its material
            let material = result.node!.geometry!.firstMaterial!

            // highlight it
            SCNTransaction.begin()
            SCNTransaction.setAnimationDuration(0.5)

            // on completion - unhighlight
            SCNTransaction.setCompletionBlock {
                SCNTransaction.begin()
                SCNTransaction.setAnimationDuration(0.5)

                material.emission.contents = UIColor.blackColor()

                SCNTransaction.commit()
            }

            material.emission.contents = UIColor.redColor()

            SCNTransaction.commit()
            //this is where your custom code for handling a touch on an object goes. The variable "result" is the object that was tapped
            self.myLabel.text = "Something Was Tapped"
        }

所以基本上是:1。制作模型2。将模型放入程序(使用默认项目用于加载船舶的代码)3。修改handleTap方法以显示所选节的信息。希望它能帮上忙:)

如果你想用简单的方法来做这件事,我建议你使用SceneKit。您可以使用任何在线三维模型制作工具制作人体模型的每个部分,然后将每个部分导出为.dae,并将其导入到SceneKit项目中。SceneKit项目中的默认代码已经实现了您想要的大部分功能,您只需修改它显示的资产(所有文件而不是ship.dae),更改模型的位置以正确排列,并修改handleTap方法,以在已有代码之后的
if hitsresults.count>0
块内的HUD UI中显示文本。基本上,您可以修改代码块,使其看起来像:

if hitResults.count > 0 {
            // retrieved the first clicked object
            let result: AnyObject! = hitResults[0]

            // get its material
            let material = result.node!.geometry!.firstMaterial!

            // highlight it
            SCNTransaction.begin()
            SCNTransaction.setAnimationDuration(0.5)

            // on completion - unhighlight
            SCNTransaction.setCompletionBlock {
                SCNTransaction.begin()
                SCNTransaction.setAnimationDuration(0.5)

                material.emission.contents = UIColor.blackColor()

                SCNTransaction.commit()
            }

            material.emission.contents = UIColor.redColor()

            SCNTransaction.commit()
            //this is where your custom code for handling a touch on an object goes. The variable "result" is the object that was tapped
            self.myLabel.text = "Something Was Tapped"
        }

所以基本上是:1。制作模型2。将模型放入程序(使用默认项目用于加载船舶的代码)3。修改handleTap方法以显示所选节的信息。希望有帮助:)

太好了,这就是我要找的。是否存在允许用户修改.dae模型的框架?作为测试,我发现了使用SceneKit的框架。基本上,他创建单个对象,然后创建对象数组,但它们不是交互式的。看看如何抓取每个数组对象并应用结果。只是好奇——你有什么进展吗?您的三维模型是什么文件类型?我想使用.mdl文件。SceneKit是否提供默认着色器?非常好,这就是我要寻找的。是否存在允许用户修改.dae模型的框架?作为测试,我发现了使用SceneKit的框架。基本上,他创建单个对象,然后创建对象数组,但它们不是交互式的。看看如何抓取每个数组对象并应用结果。只是好奇——你有什么进展吗?您的三维模型是什么文件类型?我想使用.mdl文件。SceneKit是否提供默认着色器?