Tag: unity3d

NatCam教程系列1:开始

NatCam于2015年秋天启动。我当时在一家需要在Unity中扫描条形码的初创公司工作。 当时没有解决方案,而最接近的( WebCamTexture )根本不能令人满意。 因此,我决定创建一个API来完成我们需要的API。 一年半过去了,我们来了! 那么NatCam的作用是什么? 很高兴你问。 以下是(非详尽的)列表: 流体相机预览,与WebCamTexture 高分辨率预览(在某些设备上为1920×1080或更高) 自定义分辨率预览,根据需要高低 照片拍摄。 拍摄8MP,12MP或更高的高分辨率照片 闪。 拍摄照片时,设置闪光模式 对焦和自动对焦 曝光控制。 使场景变亮或变暗 相机光学变焦 火炬。 无论是否正在运行摄像头预览,请戴上手电筒 VR支持,适用于我们所有的Cardboard和GearVR爱好者 预览数据。 在流式传输预览数据时对其进行访问

使用Mapbox和Unity3d的地图上的3D路径

简介 : 这是关于为健身活动(如跑步,步行,慢跑或徒步旅行)采取的路线的3D视图。 我们正在使用Unity Mapbox SDK来生成由Mapbox提供的3d地图。 为了使它更加用户友好和现实的交互,我们使用了iOS ARKit,该工具可用于将地图区域放置在平面上并使轨迹更清晰。 Mapbox: Mapbox是允许用户根据业务需求自定义地图的第三方。 它还提供了3d地图和其他各种功能,可用于iOS,Android,Unity3d和许多其他平台。 Unity3d: 众所周知,unity3d是由Unity Technologies开发的跨平台游戏引擎,主要用于开发3d和2d视频游戏以及用于计算机,控制台和移动设备的模拟。 ARKit: 在iOS 11中引入ARKit之后,已经实现了许多具有各种用例的应用程序,以使应用程序更加逼真。 在本文中,我们使用Unity ARKit sdk和Mapbox来检测平面,在该平面上可以为选定区域放置3d地图。 用户可以与放置在诸如桌子/地板等房间的检测到的平面上的3d地图进行交互。 初始设置以将Unity与Mapbox和ARKit集成 创建一个新的统一项目 保存场景Cmd + S以具有默认场景。 转到https://www.mapbox.com/install/unity/并下载Unity3d的Mapbox程序包 将包导入到创建的新unity项目中。 使用Mapbox网站上的Mapbox api密钥配置Unity3d。 完成项目设置后,Mapbox sdk将提供默认示例。 我们使用了具有2d地图以及要绘制导航方向的Drive Scene。 基本功能: 平面检测 :此功能用于在实时环境中检测水平面。 我们使用Apple提供的ARKit进行飞机检测。 转到Unity3d IDE中的资产商店并搜索Unity ARKit插件并安装软件包 2. 从MapBox生成3d地图: Mapbox为Unity3d提供sdk,用于自定义地图以及渲染3d地图和路线。 我们使用mapbox-unity-sdk_v1.4.2.unitypackage渲染3D地图 3. 在地图上绘制路线:我们正在通过本机iOS代码在用户活动(如跑步,步行或徒步旅行)期间跟踪和保存坐标,然后将用于特定活动的那些坐标集传递给unity3d以在3d地图上进行绘制。 从坐标中可以获得纬度和对数数据,但是对于海拔高度,我们使用地图框提供的实用程序使用地图缩放级别和其他属性将坐标转换为现实世界的位置数据,然后获取海拔高度以在地图上绘制路径。 用作构建块的组件: UnityTile :这是C#类,它是地图的基本构建块。 整个地图分为UnityTile块。 每个UnityTile都包含组成该UnityTile的地图数据的详细信息。 UnityTile具有tileId,它充当获取任何感兴趣的图块的主键。 RangeTileProvider:这是c#类,我们可以在其中设置要在地图中心坐标周围加载的图块数量。 […]

Unity —如何搭建桥梁:iOS到Swift的Unity

通过添加ARKit和iOS 11中的Core ML,能够将iOS功能桥接到Unity中,使您作为开发人员能够获得更强大和独特的产品体验。 在ustwo建立实验时,我们必须创建一个自定义屏幕录制功能,该功能涉及尚未桥接到Unity中的iOS功能。 结果是使用iOS的ReplayKit API记录游戏玩法,保存记录并将文件传递回Unity的桥梁。 源代码在这里:ReplayKitUnityBridge 在DemoUnityAndReplayKit文件夹中运行DemoScene 将Xcode的“构建设置”中的Swift版本设置为4.0,以便正确构建* 步骤1:如何从Unity向iOS发送消息 首先打开Xcode> New Project> Cocoa Touch Framework 将该项目命名为“ ReplayKitUnityBridge” 在左上角显示“ ReplayKitUnityBridge”。 右键单击->单击“新建组” 右键单击您的源文件夹,然后单击“新建文件”> Swift文件 将您的新文件命名为“ ReplayKitNative ” 将以下内容添加到您的ReplayKitNative.swift文件中 进口基金会 导入UIKit 导入ReplayKit @objc公共类ReplayKitNative:NSObject { @objc静态让共享= ReplayKitNative() 私人let screenRecorder = RPScreenRecorder.shared() 让kCallbackTarget =“ ReplayKitUnity” @objc func startScreenCapture(){ self.screenRecorder.startRecording {(错误)在 // UnitySendMessage(kCallbackTarget,“ OnStartRecording”,“”) } } 让我们回顾一下上面的代码: 使用@objc标志来标记要公开给Objective-C和Unity的内容 @objc公共类ReplayKitNative:NSObject @objc静态让共享= […]

Donutz Blatz Unity3D益智游戏

Donutz Blatz是最好的Unity3D益智游戏之一,由Team Capermint Technologies设计和开发。 免费玩此Unity3D益智游戏,享受充满不同挑战和惊喜的美味关卡。 立即下载Donutz Blatz手机游戏,享受Donutz Blatz世界的冒险! ⤵ https://itunes.apple.com/us/app/donutz-blatz/id1313198533?mt=8 — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — 寻找 Unity 3D游戏开发服务 ? 与我们联系 电话: +91 9979130018 电子邮件: hello@capermint.com Skype的: […]

使用Unity 3D和Vuforia的增强现实应用程序

每个人都想像并拥有自己的独到见解。有价值的想法是创造力。将您的想象力投入工作会在现实世界中产生非凡的输出。我相信增强现实 (AR)是IT技术中最好的创造力之一。 Unity 3D是一个游戏开发引擎,将使我们能够构建增强现实(AR)应用程序。它是构建AR应用程序的神奇且绝对出色的游戏引擎,我们将使用高通公司拥有的Vuforia的SDK。伙计们做了一些非常出色的工作,可以帮助他们快速,轻松地创建AR游戏。如果您以前从未使用过这些工具,以下是一些有用的链接。 学习Unity 刚开始? 准备提升您的职业生涯或提高团队技能? Unity具有广泛的资源,可用于… unity3d.com 入门 ©2011-2018 PTC Inc.保留所有权利。 这些材料中没有任何内容可以出售任何组件或… lib.vuforia.com 我已经使用统一的3D和Vuforia完成了简单的iOS应用。 看一看 ! 做完!!!! 现在我们准备开始我们的项目。将这两个资产合并到您的统一项目中。只需双击软件包并导入。那里的一些很棒的人只需几个简单的步骤就可以使开发人员很容易地完成此过程。谢谢! 现在,我们需要将3D模型放置在目标上.Unity本身拥有资产商店,您可以在其中搜索特定模型并下载。我使用了“ Fantasy Monster ‘,这是免费的3D图像资产,您可以使用任何想要放置的东西如果需要其他3D模型,例如“ Pokemon ”,则可以使用“ Root of evil Studios- http://roestudios.co.uk/ ”网站进行下载, 并将其添加到Project Asset文件夹中。 unity项目如下所示: 让我们统一配置相机。在Assets搜索栏中搜索ARCamera并将其放置在场景中。转到检查器选项卡中的App许可证密钥,然后粘贴从Vuforia Project复制的许可证密钥。搜索ImageTarget并将其放置在场景。转到“图像目标行为”,然后选择您先前在Vuforia项目上创建的数据库和ImageTarget。 您可以根据自己的需要来玩诸如“位置”,“旋转”和“缩放”之类的变换。现在我们可以在目标上看到我们的图像了。 选择您选择的任何图像并将其添加到场景中,通过拖动将其放置在任何位置。主要是3D模型(口袋妖怪)具有ImageTarget的子对象 (嵌套在内部),否则可能无法正常工作。另一个提示:如果您发现Image Target是白板而不是图像,请搜索ImageTarget Texture并将Texture Shape更改为2D。 而已 !! 在设备上实际运行之前,您可以在unity编辑器中运行并检查其运行是否完全符合您的预期。它会自动生成一个Xcode项目。由于iOS应用在设备上运行时需要临时配置文件,因此我建议先构建并在xcode中运行。 通过相同的过程,该项目也可以为Android设备构建。 保持联系以获取更多应用程序。 我的下一个应用程序是使用Makehuman和Unity 3D来使用类人动物。Unity3D中有很多功能。 创建自己的游乐场并开始游戏。

Unity 3D + MakeHuman + Vuforia =增强现实世界

没有什么能比让您的想象力在现实世界中发挥更大的乐趣了,这项技术已经在某种程度上控制了一切并连接了一切。增强现实(AR)是一种神奇的创作,广泛应用于各个行业,使您感到自己至少在虚拟世界中可以实现您的愿望。 增强现实每次使用都是新事物。 AR是实时摄影机,您的数字对象可与现实环境互动。 AR使您可以坐在Lion旁边或什至位于狮子的上方。尽管很多人正在现实中实现它,但我知道这是一个有趣的例子。 因此,AR的主要目的是利用技术本身进行冒险。 我为移动iOS实现了增强现实应用程序,这就是它的工作原理。 背景图片是我的杂志书的封面,这个人正好站着一个使用’MakeHuman’创建的类人动物.MakeHuman是一个旨在创建虚拟人的开源工具,它是一个完整的工具,可以帮助我们创建逼真的类人动物角色。可以导出到其他软件工具并与之一起使用。可以在其他软件工具中对这些3D模型人形生物进行进一步的改进,例如人类的步行,奔跑,坐下等动作。让我们简要讨论如何导入这些3D模型人形生物。人物融入Unity并让这个人走。 使用ARCamera配置Unity并将Vuforia的SDK导入到您的项目中。鞋子,衣服和头发的颜色都是小的眼球。它还具有您想要您的男人像美国人,亚洲人那样的人的特征。很酷吧!花些时间熟悉一下MakeHuman中所有可用功能的外观。 聪明,不是! 保存您的人类并将其导出到Unity项目的资产。将这些人形生物放置在ImageTarget上,相应地转换您的对象。您可以在unity项目中进行测试以查看对象是否正确放置。我们现在已设置了运行该应用程序的基本功能但是,更有趣的是让这些人为您的动作而移动。另一个基本功能是当用户触摸屏幕时,3D模型进行移动(行走,奔跑,坐着,跳动)。我们可以从Asset store下载动画化身我使用了“ Raw Mocap数据”,该数据由虚拟形象的不同动画组成。 现在,让我们的人体模型移动,为控制器添加所有动作和它们之间的过渡,让步入空闲并向步入空闲添加参数,并给出一些大于或小于该值的条件,我们将使用它稍后控制脚本中的动画。让我们看看我们是否在同一页面上。 现在让我们继续进行一些编码。使用您熟悉的语言创建C#脚本或JavaScript。这可能是我编写过的最简单的代码之一。只需根据用户的触摸次数用相应的动画更新功能即可。代码段: 你去了!!!!! 将您的项目构建到移动iOS或Android上并运行.charm之类的作品。这些超赞的工具提供了许多功能。深入了解所有令人惊奇的功能。即使与您一起学习,也请分享您对实现这些想法的想法AR应用。

AR的局限性–逃脱房间— AR

AR的局限性 随着9月中旬将在iOS 11上发布ARKit,并在Android上发布了ARCore,数亿消费者现在可以使用自己拥有的设备来体验增强现实。 已经几个月了,但是还没有发布改变游戏规则的应用程序。 这是为什么? AR的当前局限性是什么?在不久的将来,我们会看到AR在哪里发展? 像任何应用程序开发一样,在AR上进行构建是一项跨学科的工作。 借助AR,开发人员需要设计师,3D建模人员和编码人员来组合一个项目。 随着移动应用程序的开发,UI设计可以很容易地被黑在一起。 借助AR,3D建模存在瓶颈,如果无法负担3D建模师的费用(随着VR / AR开始获得更多关注,他们将成为热门商品),领先的开发人员需要在Blender等程序中学习建模)。 这是缺少热门的AR应用程序的原因之一。 另一个是技术本身。 我们的应用程序Escape The Room正在使用Unity的ARKit插件开发,并在Blender中生成3D资源。 这些程序非常有用,并且不受限制。 需要做出的重大飞跃是与UI / UX相关的。 人们还不知道如何使用AR应用程序。 我们正处于UX的发现阶段,就像多点触摸/滑动需要一段时间才能适应,然后变得自然一样。 现在,如果您为用户提供一个新的AR应用程序,他们将在控件上摸索一下,并最终意识到如何使用该应用程序。 应用程序中将需要教程,以向所有经验水平的用户展示如何使用该应用程序。 随着流行的AR应用程序数量的增加,将会出现一种共享语言。 目前,ARKit仅跟踪水平面,即使那样也可能是一个挑战。 要开始我们的游戏以及许多其他AR应用程序,用户需要扫描周围的环境,以便该应用程序可以检测水平面并将对象放置在该表面上,从而使其看起来与用户处于同一环境中。 这个过程并不总是无缝的。 根据照明情况,用户如何操作设备(移动太快,移动太慢,将手机保持在奇怪的角度)平面可能无法检测到。 这导致用户尴尬地走动而不是真正玩游戏。 这是需要解决的巨大摩擦。 像我们这样的开发人员需要帮助在AR UX上教育用户。 迫不及待想看看您的构建!

Unity:处理来自多个源(控制器,键盘等)的输入

喜欢这个职位吗? 您可能会喜欢 BentoBlox 也可以-在 App Store 上查看游戏 。 本周,我将为一款旨在在多个平台上运行的游戏制作原型。 核心挑战之一是预期和处理来自各种不同来源的用户输入。 我的初始方法依赖于Observer-Subscriber模型:单例UserInputDeviceManager存储对当前连接的输入设备(控制器,键盘等)的引用,并在Update上轮询该设备的按钮,以确定是否有任何按钮位于按下状态: 公共类UserInputDeviceManager:Singleton {public UserInputDevice currentUserInputDevice; 公共UserInputDevice []支持的UserInputDevices =新的UserInputDevice [] { 新的XBoxOneController(), 新的PS3Controller(), 新的DualShock4Controller(), 新的KeyboardController() }; 重写受保护的void Awake() {base.Awake(); SetupCurrentUserInputDevice(); }私人无效SetupCurrentUserInputDevice() { currentUserInputDevice = System.Array.Find(supportedUserInputDevices,m => m.IsConnected()); } void Update() { currentUserInputDevice.PollButtons(); }} 在PollButtons ,每个UserInputDevice广播处于按下状态的任何按钮的事件: 公共无效PollButtons() { ArrayList按钮= new ArrayList(); button.Add(JumpButton); button.Add(ConfirmButton); button.Add(PauseButton); button.Add(DPad.LeftButton); button.Add(DPad.RightButton); button.Add(DPad.TopButton); […]

Unity vuforia xcode(iOS:armv7,arm64)

如果您最近使用这些软件为iOS(armv7,arm64)构build了应用程序,请注意分享:您使用的是什么版本的unity,vuforia和xcode。

函数声明器之后的预期函数体

尝试在xcode中编译unity3d项目,但我得到下面的函数的以下编译错误。 有人知道原因是什么? 使用Xcode 4,SDK 4.3和Unity 3.3 Base SDK设置为4.3,Unity中的SDK版本设置为4.2,目标iOS为3.2 AppController.mm:710:错误:预期的初始化之前'。 代币 AppController.mm:错误:parsing问题:函数声明器之后的预期函数体 void PresentContext_UnityCallback(struct UnityFrameStats const* unityFrameStats) { #if ENABLE_INTERNAL_PROFILER _unityFrameStats = *unityFrameStats; if (_frameId % BLOCK_ON_GPU_EACH_NTH_FRAME == (BLOCK_ON_GPU_EACH_NTH_FRAME-1)) { Prof_Int64 gpuTime0 = mach_absolute_time(); #if ENABLE_BLOCK_ON_GPU_PROFILER UnityFinishRendering(); #endif Prof_Int64 gpuTime1 = mach_absolute_time(); _gpuDelta = gpuTime1 – gpuTime0; } else _gpuDelta = 0; #endif #if ENABLE_INTERNAL_PROFILER Prof_Int64 […]