Tag: scenekit

ARKit + SceneKit几何图形教程(第2部分)

如果您还没有,我强烈建议您阅读《 ARKit + SceneKit几何图形教程》(第1部分),其中有一些核心图形概念,您需要对其进行理解才能继续。 到目前为止,我已经向您展示了如何使用带有顶点,法线贴图和纹理贴图的原始类型重新创建SCNPlane和SCNBox的示例。 我接下来要讨论的是如何通过缩放,旋转或平移场景节点无法实现的方式使这些几何体生动起来。 这是本教程随附的GitHub存储库: maxxfrazer / SCNCustomGeometries-Part2 伴随我的中篇文章的第2部分。 通过创建以下内容,为maxxfrazer / SCNCustomGeometries-Part2开发做出贡献: github.com 我们要做的第一件事是获取多维数据集的单个顶点,并制作一个动画,使其看起来像是从多维数据集的中心拉开,然后随着其移回原位而产生摆动效果。 下面的GIF演示了动画: 单击此处在GitHub上查看此项目 这里的基本思想是,给定点[x,y,z]处的顶点,我想将其拉至[1.5x, 1.5y, 1.5y] ,然后将其释放回[x,y,z] 。 此处是随机选择顶点的,但是您可以添加hitTest来通过点击选择点。 当做这样的事情时,我发现使用图形计算器很有用,Desmos确实很棒,我已经使用了很多年了。 我建立了一个新类BoxStretcher ,它是SCNNode子类。 我还在SCNGeometry添加了另一个类函数,以返回具有8个顶点的标准多维数据集的顶点和索引。 我添加到BoxStretch的另一个有用函数是updateGeometry() ,它在给定更新后的顶点和索引的情况下创建SCNGeometry,并在顶点更新时重新分配节点的几何形状。 我发现为几何更新设置动画的最佳方法是使用SCNAction.customAction(duration:action :)。 无论您在代码块中放置什么,都称为每一帧,这是大多数动画所需要的。 这是animateCorner()的内容,它将在每次调用时更新顶点并刷新几何: 上面看起来有点复杂,所以让我们分解一下。 elapsedTime将是一个数字[0–3],因此在开始的0.5秒内,我们将通过if而不是else。 使用Desmos,我们可以看到它的图形如下所示(将时间交换为x): 因此,当elapsedTime达到0.5时,顶点应为[x,y,z] *(1 + 0.5),这将是我们想要的最远距离。 现在,当我们在0.5之后引入该部分时,如果将其分解,则为正弦波乘以指数衰减。 没有衰减,它将永远继续摆动,但是有了衰减,我们得到了顶点的良好运动,速度变慢并回到零。 当我们有零时,我们有:[x,y,z] *(1 + 0.0); 回到我们的起点。 这是指向我的Desmos图的链接,沿y轴有一个点,该点应遵循与顶点完全相同的模式。 拉伸释放 拉伸释放 拉伸释放www.desmos.com 对不起,如果我在那里失去你。 关键是我们希望该点沿[x,y,z]方向移动,但是自从我们开始以来基于时间多少? 我们需要一个函数,该函数需要花费时间并输出我们应该沿着曲线移动多少。 […]

SceneKit中的自定义几何

作为高级3D渲染框架,SceneKit允许我们通过简单地从3D建模软件导入3D对象来渲染它们。 它具有一些内置的原始形状( SCNPlane , SCNBox , SCNSphere等),使我们能够以非常简单的方式在屏幕上绘制3D几何形状。 然后,我想知道是否有可能以编程方式生成自定义几何,因为我觉得在可视化复杂数据方面可能很有用。 在SceneKit的文档中,答案是肯定的,可以通过SCNGeometrySource和SCNGeometryElement 。 这让我很兴奋,所以我继续上网,发现了一个简单的几何图形,而八面体的SceneKit并没有提供这种几何图形(就像两个金字塔粘合在一起)。 在3D计算机图形学中,3D对象通常由多个三角形表面组成。 我们将需要两组数据来绘制这些曲面,它们是3D对象角(也称为顶点)的位置以及将这些顶点连接以创建三角形曲面的序列。 在编写代码之前,让我们取一个八面体,并为其每个顶点赋予一个从零开始的数字。 当我们稍后在代码中定义顶点时,顶点0将是第一个顶点,顶点1将是第二个顶点,依此类推。 接下来,确定3D空间中所有顶点的坐标。 我估计了如下图所示的坐标,您可以将它们调整为任意的值。 接下来,我们需要定义八面体的表面,这也是这些顶点之间的连接顺序。 由于八面体的所有表面均为三角形,因此我们不必将表面分解为多个三角形。 但是,定义序列可能会有些棘手,因为大部分时间只绘制表面的一侧(正面)。 因此,如果您看着表面的背面,它将是透明的。 您可能会问SceneKit如何知道哪一侧是正面。 好吧,我们通过定义序列的方式告诉它。 如果曲面的顶点是正面,则以逆时针顺序定义。 因此,您将获得如下序列: 如果顺序不同,也可以,只要按逆时针顺序定义曲面即可。

SpriteKit与SceneKit

。로중심으로글입니다。 。다있습니。 오역이나정보에대한정은언제든지환영합니다🙂 개발할때개발할때OpenGL OpenGL OpenGL나나나의그래픽그래픽그래픽매김매김매김매김매김。。 이러한API들은GPU와와다。 만지만full graphics택스택(결과를기만들어내공동의기달성하기달성하)것들이있다。 API应用程序框架API框架图形渲染引擎 ,图形渲染基础架构,图形渲染基础设施,SpriteKit 과SceneKit유이등장이다。 动画,Core Animation框架,QuartzCore,GLKit和iOS版本的사용된다。 SceneKit核心动画框架,SpriteKit产品和主题。 SceneKit的高级3D图形框架,渲染引擎和描述性API的交互。 金属较低级别的API보다는다。 (水果忍者양한양한카메라가고3D게임을보생각해) SceneKit은Loin OS배포되었으며sc sc sc sc sc션만scription de D D D D D D D D 3D되었되었다de다 이것의“场景图”의의의의션을션을션을션을높인다。 的Objective-C,斯威夫特 斯威夫特游乐场 Quartz,Core Animation,GL Kitworks发行中的内容양한양한얻얻위해른른술들과술들과술들과술들과통합됨 킬을로그래밍스킬을지요구하 SceneKit알아보기 Apple入门指南和SceneKit最佳做法。 SpriteKit发行了2D发行版。 (Candy Crush나愤怒的小鸟배터배터리를이않는지않는较低级别的2D애니메이션을보생각해) SpriteKit的SceneKit版本(iOS 7版本),2D的版本版本,Sprite的版本,OpenGL的图形API和图形版本。 rite sprites웹페나나파일파일이이파일파일비개발자들에게비개발자들에게이이이이。 sprite운운위치하는데위치하는데위치하는데위치하는데위치하는데위치하는데위치하는데션을。。필요필요필요없음을。다 rite SpriteKit그저rite rite한리한다。 SpriteKit본본원나나션션션능을능을게임에게임에공게임에공。 […]

ARKit + SceneKit几何图形教程(第1部分)

越来越多的iOS开发人员正在使用ARKit创建有趣的应用程序,但是这些开发人员中的许多人总体上并未接触过3D图形。 我在这篇文章中谈论的3D图形的特定部分是几何。 这是学习OpenGL的人的起点,但使用SceneKit似乎更有吸引力,既可以使用内置几何类型,也可以从在另一个3D建模程序中创建的SCNScene文件导入节点。 自己生成这些几何图形有好处的地方,主要是因为您在沿途学习的东西! GitHub上的这个项目包含下面显示的所有示例 在本教程和第2部分结束时,您应该能够像下面这样在SceneKit中创建一个动画网格物体: 我们之前看过这个吗? 重点是什么? 关键是,一旦有了这些基础,您只需稍加戳戳即可创建稍微不同的几何形状,而无需引入外部模型。 上述立方体的尺寸为0.2×0.2×0.2。 如果创建一个我称为的新几何类型,例如SkewBox,它会引入一个额外的参数skew: CGPoint我可以这样更改顶点(也在GitHub上): 让 src = SCNGeometrySource(vertices:[ //底部4个顶点 SCNVector3(-w,-h,-l), SCNVector3(w,-h,-l), SCNVector3(w,-h,l), SCNVector3(-w,-h,l), //前4个顶点 SCNVector3(-w + skew.x,h,-l + skew.y), SCNVector3(w + skew.x,h,-l + skew.y), SCNVector3(w + skew.x,h,l + skew.y), SCNVector3(-w + skew.x,h,l + skew.y), ]) 输出: 从这里您可以创建任何六面体! 然后达到任何其他形状。 下一步是对几何图形进行动画处理以使其伸展和倾斜,这种方式无法简单地通过缩放节点,仅通过更改几何图形来完成,例如此处的示例: 单击此处查看第2部分。如果有任何不清楚的地方或对以后的帖子有任何建议,请随时在Twitter或LinkedIn上关注我/向我发送消息。 查看我的GitHub上的其他项目。

SceneKit的厄运

SceneKit — 3Dграфики,которыйпоможетвомсоздаватьанимиреенныененные3D Онвключаетвсебяфизическийдвижок,генераторчастицинаборпростыхдействийдля3Dобъектов,которыепозволятвамописатьвашусценувтерминах контента – геометрии,материалов,освещения,камер – ианимироватьеёчерезописаниеизмененийдляэтих объектов 。 – 苹果 Сегоднямывнимательным,немногосуровымвзглядомпосмотримнаSceneKit,но,дляначала,обратимсякосновам,ипосмотрим,чтопредставляетизсебя3Dсцена,ичтонужносделать,чтобыеёсоздать。 Дляначала,нужносоздатьосновнуюструктурусцены,котораясостоитизнод,илиузловсцены。 Каждаянодаможетсодержатьвсебекакгеометрию,такидругиеноды。 Геометрияможетбытьпростой,вродешара,куба,илипирамиды,такиболеесложной,созданнойво。 Затем,дляэтойгеометриинеобходимозадатьматериалы,которыебудутопределятьбазовоепредставла。 Каждыйматериалсамзадаётсвоюмодельосвещения,и,взависимостиотнеё,используотвазличный。 Каждоетакоесвойствообычнопредставляетизсебяцветилитекстуру,но,помимоэтихчастоиспользуемыхвариантов,естьещёвозможностьиспользовать的CALayer,AVPlayer,иSKScene。 Послеэтого,необходимодобавитьисточникиосвещения,которыеопределяютто,насколькоооо Они,поаналогиисгеометрией,должнылежатьвнутрикакой-нибудьноды。 SceneKit是Поддерживаетмногоразныхтиповосвещения或такженескольковидовтеней的产品。 Затемнужносоздатькамеру(иположитьеёвотдельнуюноду)изадатьдлянеёосновныепараметры。 Ихдовольномного,но,спомощьюнихможносоздаватькрутыеэффекты。 Изкоробкиподдержибокэ(илиэффектразмытия),HDRсадаптацией,свечение,SSAOиоооии。 И,наконец,SceneKit在3Dобъектов,которыепозволяюннетевель Такжесценкитподдерживаетдействия,JavaScript,ноэтотемадляотдельнойстатьи。 Помимографики,главнымифишкамиSceneKit’аявляютсягенераторчастиципродвинутыйфизическийдвижок,которыйпозволяетзадаватьреальныефизическиесвойствакакобычнымобъектам,такисчастицамизгенератора。 Провсеэтифишкинаписанобольшоеколичествотуториалов,которыерассказываютпронихвововоо。 Новпроцессеразработкимыэтивозможностипрактическинеиспользовали… Однажды,янаписалмодельосвещениядля3D-игрлучшереальногосолнечногосвета,дающуюприемлемуюFPSнаNvidia的8800,ноярешилневыпускатьдвижоквсвет,таккакБогмнесимпатичен,иянехочупоказыватьегонекомпетентностьв этомвопросе 。 —ДжонКармак Подробноеизучениемыначнемсдовольнопростойзадачи,котораявозникаетпрактическиувсех,работающихсоSceneKit’омдовольносерьёзно:какзагрузитьмодельсосложнойгеометриейиподключеннымиматериалами,освещением,даещеисанимациями? Естьнесколькоспособов,ивсеониимеютсвоиплюсыиминусы: SCNScene(named)—получаетсценуизбандла; SCNScene(url:options 🙂 —загружаетсценупоurl; SCNScene(mdlAsset 🙂 —конвертируетсценуизразныхформатов; SCNReferenceNode(URL 🙂 —ленивозагружаетсцену。 Получаемсценуизбандла Можновоспользоватьсяметодом:положитьнашумодель。 Ночтоделать,есливыхотитесамиконтролироватьобновлениемоделей,невыпускаяобнове Иливыхотитеподдержатьсозданныепользователямикартыимодели? Илидажевепростонехотитеувеличиватьразмерприложения,таккак3Dграфиканеявоеосевашей Загружаемсценупоurl МожноиспользоватьконструкторсценыизURL .scnфайла。 […]

重新访问SceneKit的第2部分:灯光,动作,网格

我对正在使用的3D模型非常满意,现在可以在现场(SCN)文件中完成更多工作。 我希望能够在某个时候将SCN文件与ARKit一起使用。 苹果在创建用于增强现实的虚拟内容方面有一些指导原则。 使用SceneKit提供3D虚拟内容| Apple开发人员文档 由于ARKit会自动将SceneKit空间与现实世界相匹配,因此放置一个虚拟对象使其看起来像… developer.apple.com 是否创建场景(SCN)文件的多个变体? 实际上,我能够使用场景文件引用来使项目更易于维护。 这是Scene Kit中非常强大的功能(Sprite Kit也支持引用)。 您可以将场景拆分为多个文件。 几年来,使用情节提要文件的视图控制器已提供此功能。 您可以在媒体库表中查看场景,并将其拖到场景图窗口或主场景工具箱编辑器视图中。 您也可以从文件导航器中拖放SCN文件。 我会详细说明; 我有一个3D食物对象,并且想在以下情况下使用该模型: 一个带有灯光的演示场景和一些动画,引用了chesee汉堡 带有汉堡包的带有阴影纹理的平面的奶酪汉堡 最终,我创建了3个场景文件: burger.scn-基本的汉堡场景文件 burger_arkit.scn —此文件使用其他3D元素引用burger.scn文件:以阴影纹理贴图作为材质的平面。 burger_dressed.scn-此文件引用burger.scn文件,并包括照明和SceneKit操作。 简要说明一下:Xcode中的SceneKit编辑器具有时间轴功能,可让您将动作应用于场景。 我添加了一个无限循环的旋转动作来不断旋转汉堡。 您可以完全在Scene Kit编辑器中设置复杂的动作,而无需编写任何代码。 我个人觉得很讨厌的一件事是,您不能只双击时间轴视图中的动作来编辑动作的值。 您可以在检查器的“属性”选项卡中编辑操作的设置(我会将其写在便笺上,以备将来参考)。 SCN动作 您最常使用动作来更改动作所附加的对象的结构和内容,但是您可以… developer.apple.com 当我开始在穿着汉堡的场景文件中点亮场景时,我还需要编辑汉堡场景文件并调整一些材质设置。 默认的镜面反射设置使汉堡包反射光。 我将镜面反射值更改为黑色,以指示面包不真正反射光。 是的,我会在材质设置fast上有些松懈,这是我在使用各种3d引擎和框架时不断学习的东西。 高光 声明镜面反射阴影描述了材料直接反射到……的光的数量和颜色。 developer.apple.com 汉堡看起来更好,但正如您所看到的,肉饼看起来并不那么逼真。 理想情况下,我将与材料和照明专家合作。 汉堡肉饼网格可以使用法线贴图使它看起来更像真实的东西。 如果您想看一些很棒的实时3D渲染食物,请查看《最终幻想XV》。 《最终幻想XV》中的食物疯狂逼真 在2006年,视频游戏开发商Square Enix宣布了一款名为《最终幻想对决XIII》的游戏,旨在将其作为衍生产品…… www.eater.com 现在,基于物理的渲染(PBR)呢? 考虑到正在使用的芝士汉堡模型在Scene Kit中看起来不太现实-我想我现在将保留它。 2017年8月更新 Watch应用程式无法与Watch OS […]

ARKit CocoaPod —门户

我相信ARKit开发人员生态系统中目前最大的遗漏是可重用代码。 通常,iOS开发使用了许多令人赞叹的Pod,但还没有专门用于ARKit的Pod。 这是我在这篇文章中将要解释的CocoaPod,请随时报告问题,分叉并做出贡献! maxxfrazer / SceneKit-PortalMask 清理类以在SceneKit中创建一个门户,以在ARKit中使用。 – maxxfrazer / SceneKit-PortalMask github.com 当我在增强现实领域开始我的职业生涯时,我主要使用类似于Vuforia的工具基于标记的AR。 很多客户都希望有一种趋势,而我可以看到这是ARKit中一种趋势。 想法是遮盖跟踪图像本身之外的所有内容,但允许您通过图像所在的孔查看。 这是使用此Pod可以实现的两个简单示例,其中一个仅包含几行代码: 这是一个代码示例,用于创建类似于左侧示例的内容。 仅向Portal馈送physicalSize ,它在对象周围创建掩码。 func renderer(_ renderer:SCNSceneRenderer,didAdd节点:SCNNode,锚点:ARAnchor){ 如果让imageAnchor =锚定为? ARImageAnchor { 让nodeRotated = SCNNode() // ARImageAnchors上的节点需要旋转-90度 nodeRotated.eulerAngles.x = -.pi / 2让imageSize = imageAnchor.referenceImage.physicalSize //接下来的两行添加门户 让门户= PortalMask(frameSize:imageSize) nodeRotated.addChildNode(portal) //接下来的5行会在图像区域内添加一个多维数据集 让width = imageAnchor.referenceImage.physicalSize.width let boxNode = SCNNode(几何:SCNBox(宽度:宽度,高度:宽度,长度:宽度,倒角半径:0)) //将方框推到标记后面 boxNode.position.z = -boxNode.width nodeRotated.addChildNode(boxNode)node.addChild(nodeRotated) […]

使用ARKit和Swift创建交互式Domino游戏

在下面的教程中,我将向您展示如何使用Swift和ARKit制作有趣的Domino游戏。 我们将我们的项目命名为ARDominoes ,选择Swift作为语言,选择SceneKit作为Content Technology。 我们选择的增强现实应用模板带有一些预先编写的代码,这些代码可以为我们设置场景,并且几乎可以使用。 我们只需要更改一行代码。 请注意,本教程的所有代码都将在ViewController类中编写。 在viewDidLoad ,需要更改的行改为let scene = SCNScene() let scene = SCNScene(named: “art.scnassets/ship.scn”)! 因为我们只想要一个空的场景而不是太空飞船! 我们要做的第一件事是添加plane detection 到我们的场景。 简单地说,“平面检测”是在现实世界中找到任何水平(或垂直)平面。 首先,让我们创建一个空字典,以便保留对ARKit检测到的平面的引用。 将以下行添加到类的顶部: 好吧,命中测试正在起作用,但是现在我们遇到了一个新问题:多米诺骨牌!!! (不要担心多米诺骨牌都面对相同的方向,我们稍后会解决)。 当用户在屏幕上移动手指时,将调用平移手势。 由于这是连续运动,因此该方法每秒被调用多次。 我们需要找出一种在每个多米诺骨牌之间留一些距离的方法。 为此,我们必须保存先前放置的多米诺骨牌的位置,然后计算其与命中测试当前位置的距离。 如果该距离大于或等于某个最小距离,则将放置新的多米诺骨牌,否则,我们将退出该函数并重复该过程,直到达到最小距离为止。 创建一个新变量并将其添加到类的顶部。 这将存储我们最近放置的多米诺骨牌的位置: 由于首次创建多米诺时没有旋转值,因此它们都面向相同的方向。 为了弄清楚每个多米诺骨牌应该面对的方向,我们必须做一些数学运算。 从上图可以看到,我们的当前状况类似于左图,每个多米诺骨牌朝向相同的方向。 我们希望使其看起来像右侧的图,以便正确放置每个放置的新多米诺骨牌。 为此,我们必须计算先前的多米诺骨牌位置和当前位置之间的角度,并相应地旋转新的多米诺骨牌。 我们可以使用arcTan公式获得两个多米诺骨牌之间的角度。 此公式计算相对于轴(在本例中为X轴)的两点之间的角度。 将以下函数添加到您的类中: 现在,我们的多米诺骨牌旋转得很好。 现在我们已经很好地设置了多米诺骨牌,是时候让它们变得互动了。 SceneKit物理引擎实际上非常易于使用。 您只需要让SceneKit知道要对物理应用哪些对象,然后SceneKit就可以完成其余工作。 在我们的案例中,我们想告诉SceneKit我们的多米诺骨牌应该彼此碰撞并且与地板碰撞。 为此,我们必须在节点上添加所谓的“ 物理体 ”。 在节点上添加物理实体会告诉SceneKit在物理模拟中包括该节点。 要在SceneKit中创建物理物体,我们必须为其指定type和shape 。 有三种不同类型的物理实体: 静态 :不受力或碰撞影响且无法移动的物理物体。 […]

WWDC18:ARKit2与ARKit1.5 — 2D跟踪性能比较

去年,最有趣的技术趋势之一就是增强现实。 包括苹果在内的所有大公司都做了与之相关的事情。 他们花了大量的资源和时间来解决这个问题,正如蒂姆·库克(Tim Cook)所说的: “……增强现实可能是下一件大事……” 如果说2017年是引入一个完整的可处理AR框架的里程碑年,那么2018年无疑是ARKit2引入后该技术成熟的一年。 为了可用性,可维护性和简单性,许多事情已经发生了变化:所有可能有助于将技术大规模传播的事物。 本文的其余部分是关于我对新的ARKit框架的个人经验,重点介绍了iOS11和iOS12之间的改进和区别。 就像任何优秀的开发人员文章一样,我们需要进行案例研究以更好地解释该主题。 所以,就在这里。 我们将创建一个简单的应用程序,该应用程序使用增强现实技术在指出名片时向您显示特别优惠和其他信息。 (可选)应用程序将从remte JSON加载所需的信息,然后在需要时向用户显示相应的视觉增强功能。 首先是打开Xcode并创建一个填充所有相关内容的新AR项目: 默认情况下,Xcode创建一个供使用的起始场景,而该场景对于本文中的内容完全没有用。 删除它并打开为我们自动创建的ViewController.swift文件。 由于我们不再关心自动生成的场景,因此将修改viewDidLoad方法以反映此行为。 我们所需要做的就是用正确的委托实例以及一些用于调试目的的有趣的东西来指示sceneView出口。 覆盖func viewDidLoad(){ super.viewDidLoad() sceneView.delegate =自我 sceneView.showsStatistics = true sceneView.autoenablesDefaultLighting = true sceneView.automaticallyUpdatesLighting = true } ARSCNView类是任何AR应用程序的入口点。 它将虚拟内容与通过摄像头设备看到的真实单词混合在一起。 它还负责许多其他非常有趣的东西,例如将触摸映射到现实世界坐标。 ARSCNView依赖于委托方法。 通过实现其ARSCNViewDelegate ,我们可以将虚拟内容添加到ARKit自动检测到的任何真实对象中。 您可能会猜到ARKit是负责增强现实的框架。 为了正常工作,应该首先正确初始化它。 让我们添加一个方法来做到这一点: 右键单击左侧,创建一个新的AR资源组: 将其命名为Photos并添加一些卡片。 这里最重要的是为每张卡添加相对估计的尺寸。 这很重要,因为3d引擎需要此信息来正确估计3d世界中的对象。 您可能会注意到其中一张卡具有警告信号。 让我们点击它: Xcode警告我们,卡上的直方图和对比度对于图像识别而言并非最佳。 让我们暂时忽略它。 我们的玩具应用程序应该能够使用锚点来跟踪2D图像并将其映射到现实世界中的对象。 ARAnchor是负责现实位置和方向的类,用于在AR场景中映射检测到的对象。 除其他有趣的属性外,它还包含一个matrix_float4x4,用于定义锚点在世界坐标系中的旋转,平移和缩放。 打开var转换:matrix_float4x4 {get} […]

再次访问SceneKit:第1部分

我正在一个使用iOS和WatchKit作为应用对象的SceneKit&Swift的实验项目上做一些工作; 可能这是一个更大项目的一部分; 在过去的几年中,我一直在与SceneKit一起工作。 我也曾使用Unity3D和Unreal引擎。 SceneKit | Apple开发人员文档 SceneKit结合了高性能渲染引擎和描述性API,可用于导入,操作和渲染…… developer.apple.com 我正在使用SceneKit,因为我想拥有一个包含UIKit和SceneKit的应用程序;其次,我想看看如何使用SceneKit在Apple Watch上显示3D模型(注:目前,该项目不适用于Watch OS 4 Beta)。 我对3D建模不是那么快; 因此,出于实验目的,我采购了一些具有此项目的知识共享许可的汉堡模型。 CGburger | 混合交换 这是一个芝麻面包上的芝士汉堡,带有洋葱圈和适量的软饮料。 一切都使用纹理… www.blendswap.com 非常感谢分享此工作的人们。 我也在GitHub上开源了该实验的工作。 ManjitBedi / 3D-汉堡 3D-Burger –在iOS设备和Apple Watch上使用usng Scene Kit的示例 github.com 为了将模型导入Xcode,我需要将Blender项目转换为collada文件(DAE)。 Blender确实允许您将项目导出到collada文件。 但是这些对象并不是为了最终在这样的应用程序中而设计的。 材料看起来不正确。 我花了一些时间在Xcode Scene Kit编辑器中编辑材料。 我发现自己在思考,我将使用汉堡包的照片图像作为参考,以获取小圆面包,西红柿等零件的RGB值。 等等,这是在吃午饭之前完成的-我为自己设定了一个挑战。 Xcode内置了材料编辑器。我选择了3D网格,然后在检查器中选择了“材料”选项卡。 目前,我只是在更改漫反射设置值。 与照明和材料打交道引入了另一套术语,以提高其知名度。 我记得在Unity中编辑颜色时对术语反照率感到困惑-为什么不只说颜色呢? 我知道现在有这个理由reason。 我使用颜色选择器工具将鼠标悬停在汉堡照片上以选择颜色。 选择颜色时,我会选择图像中光线充足的部分。 我有一个基本的iOS应用程序,用于显示场景工具包文件(SCN)。 在Xcode界面构建器中,您可以在场景视图的属性中引用SCN文件。 注意:您需要在“ art.scnassets”条目中包含资产文件夹名称,并提供“ art.scnassets / […]