我正在尝试通过添加一个带有简单动画(如“panda.scn”和“walk.scn” Assets )的模型来试验 Apple 的 Fox 游戏 SceneKit 示例(下面的链接)。
我可以创建一个没有关节或动画的静态模型:例如在 Maya (2017) 中,我添加了一个简单的球体,将选择导出到 FBX_DAE (COLLADA) 文件,将其拖到 XCode 中的项目中并将其转换为 SCN 文件。然后我可以将该模型拖到“level.scn”中,按照我的预期定位和缩放它。
但是,一旦我向我的模型添加任何动画或关节,我就失去了在 XCode 中定位和缩放模型的能力。
在 Maya 中,我将两个关节添加到我的球体中,选择球体和关节并按上述方式导出。当我在 XCode 中检查模型 SCN(无论是孤立的还是作为另一个场景中的引用)时,我发现我无法应用任何平移或缩放。 XCode 允许我在 GUI 中移动 xyz 定位器并更新比例,但模型没有改变。我可以在轮廓 View 中看到网格和关节,我尝试移动关节而不是网格,但它们什么也没做。我什至尝试过忽略 GUI 并在代码中定位模型,就像设置 Pandas 角色一样,但对节点应用位置或变换没有任何作用 - 它总是出现在原点和默认比例。
暂时忽略这一点,我通过查看“walk.scn”文件的理解是动画只是带有关键帧的关节的导出。我试图通过仅将关节导出到一个单独的 DAE 并导入它来重现它,然后在代码中应用它,就像它们对“walkAnimation”所做的那样。这似乎也无济于事。
我尝试了 FBX_DAE 导出对话框的各种设置,包括烘焙动画(顺便说一下 - 导出时烘焙动画与导出前在 Maya 中烘焙动画有什么区别?前者似乎做某事而另一个做我的测试中没有任何内容。)
我非常喜欢在 Maya 中创建一些简单的角色动画并将它们导入 SceneKit 的工作流程。非常感谢任何帮助。
供引用:
苹果来源:https://developer.apple.com/library/content/samplecode/Fox/Introduction/Intro.html
我的带有两个关节的普通球模型的 Maya 场景: http://pat.net/misc/ball1.mb 以及 Maya 的 DAE 输出: http://pat.net/misc/ball1.dae
更新:
Mnuages 的回答似乎是正确的,因为当我在几何体和关节上添加一个父控件时,SceneKit 允许我移动它们。但是,即使复习了我对这些节点及其变换在 Maya 中的关联方式的理解,我仍然觉得我对 SceneKit 如何解释它们没有真正的理解。 (很想阅读一些文档,如果它们存在的话,会更多地阐明这一点)。
更新#2:
我终于能够通过执行以下操作来创建动画:1) 导出完整场景或仅导出带有动画的关节,确保在 DAE 导出对话框中选择“烘焙动画”选项或烘焙整个动画使用键->烘焙动画。 2) 只有当我在 scenekit 中加载 DAE 文件而不是将其转换为 SCN 时它才有效。转成SCN格式好像动画没了。
最佳答案
发生的事情是名为 joint1 的节点由 joint1-anim 动画制作。因此,即使您在编辑器中移动 joint1,您在屏幕上看到的也是动画计算后的结果。
如果你创建一个中间节点,比如说joint1-parent,并且让joint1成为joint1-parent的子节点,那么你您将能够自由地平移和旋转 joint1-parent 并查看对 joint1 的影响。
至于为什么移动pSphere不会改变任何东西,这是同一个想法。就像动画覆盖位置一样,骨架将重新定位网格。
关于ios - 如何从 Maya 导出简单的装配模型以用于 Scenekit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41653514/
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何