我查看了WWDC中的Banana游戏,它是用Objective-C编写的,它试图将代码转换为swift以导入动画并在它们之间进行转换,但是我遇到了从DAE文件中快速运行动画的问题.
我有来自3DSMAx和openCollada格式的AutoDesk格式的导出器DAE文件.autodeskformat animtation是针对每个骨骼所以我无法按名称调用动画,因此我只需导入场景并执行以下操作,以便在文件加载后立即启动动画.
scene = SCNScene(named: "monster.scnassets/monsterScene.DAE")
scene2 = SCNScene(named:"monster.scnassets/monster.DAE")
var heroNode = SCNNode()
heroNode = scene.rootNode.childNodeWithName("heroNode", recursively: false)!
var nodeArray = scene2.rootNode.childNodes
for childNode in nodeArray {
heroNode.addChildNode(childNode as SCNNode)
}
Run Code Online (Sandbox Code Playgroud)
尽管动画在场景开始时播放,但我知道如何存储动画.
如果我使用openCollada导出collada文件.我可以使用以下命令来运行get并运行动画,因为在AutoDesk collada格式的情况下,整个对象只有一个动画而不是每个骨骼.通过这种方式,我也可以使用CAAnimation存储动画.
var anim = scene2.rootNode.animationForKey("monster-1")
childNode.addAnimation(anim, forKey: "monster-1")
Run Code Online (Sandbox Code Playgroud)
但是然后角色以某个角度运行并且来回运行而不是在同一个地方跑.
使用openCollada也可以更好地照明.我只想使用openCollada而不是autodesk collada export.现在我使用openCollada格式导出场景,使用autodesk导出字符.
如何在SceneKit中快速存储动画并在它们之间进行过渡?谢谢.:d
假设我有一个collada文件,其中有一个框,我将dae文件导入到场景中.现在在场景中导入后我知道dae对象是一个盒子.在将场景添加到场景后,如何获取场景包中的框的尺寸
如果我将节点作为SCNBox导入,则会收到错误消息,指出SNCBox不是SCNNode的子类型.
floorNode = scene.rootNode.childNodeWithName("floor", recursively: false) as SCNBox
floorNode?.physicsBody = SCNPhysicsBody.staticBody()
floorNode?.physicsBody?.categoryBitMask = 2
let floorGeo: SCNBox = floorNode.geometry! as SCNBox
Run Code Online (Sandbox Code Playgroud)
如果SCNNode是导入节点的唯一方法,我如何获得维度?
因此,我尝试在 Visual Studio 2019 和 2022 中使用counting_semaphore,但我得到的只是“std 没有成员counting_semaphore”。
在各个组件中添加 clang 11 后,我在 Visual Studio 2019 中进行了尝试,但仍然遇到相同的错误。然后我就想,好吧,它不支持 C++20。所以我想也许这就是它不起作用的原因。
然后我看到Vs2022 Preview支持C++20。所以我安装了它,包括在内,但我仍然无法执行“std::counting_semaphore<5> slot(5);” 正如它所说,std 没有一个名为计数信号量的成员。
我还在 2022 年预览安装程序的各个组件中安装了 clang12,但仍然无法正常工作。
我不确定我做错了什么。
我在网上看到例子:
https://www.modernnescpp.com/index.php/semaphores-in-c-20 https://en.cppreference.com/w/cpp/thread/counting_semaphore
告诉如何使用它,但是当我将代码放入 vs 中时,它不起作用。
我可以在#include 上“查看代码”,它显示了counting_semaphore 的实现,但我无法使用它!
请有人澄清我做错了什么!