• 今天为大家分享一下,如何通过WebCamera 调用外部的摄像头。    1.首先我们需要简单认识一下,unity... 官方文档:https://docs.unity3d.com/ScriptReference/WebCamDevice.html    WebCamTexture  官方文档

       今天为大家分享一下,如何通过WebCamera 调用外部的摄像头。

     

      1.首先我们需要简单认识一下,unity有关摄像头需要用到的内置类;

        WebCamDevice

           官方文档:https://docs.unity3d.com/ScriptReference/WebCamDevice.html

     

        WebCamTexture

           官方文档:https://docs.unity3d.com/ScriptReference/WebCamTexture.html

     

     

      2.新建一个unity3d 项目,在场景中新建Resources文件夹》Material文件夹,在文件夹中新建一个材质CameraPlane.mat;并且材质球的Shader:Unlit/Texture.

     

     

      3.在场景中新建一个Camera,并且把对象重新命名为WebCamera,在WebCamera下面添加一个子对象Plane[PlaneMeshRender],注意点是:(1).plane的Rotation (X:90 Y:180 Z:0)如果不修改 ,显示的画面,会相反显示;(2).需要MeshRender,把第一步操作的材质球附加上。

     

      

     

      4.到这一步,就是比较重点了,在WebCamera上附加一个WebCameraManager.cs 组件类,主要是处理调用外部摄像头,并且显示摄像的内容。

      

       

        WebCameraManager.cs 代码如下:

    using System.Collections;[/align]using System.Collections.Generic;
    using UnityEngine;
     
    public class WebCameraManager : MonoBehaviour {
     
            public string DeviceName;  
            public Vector2 CameraSize;
            public float CameraFPS;
     
            //接收返回的图片数据  
            WebCamTexture _webCamera;  
            public GameObject Plane;//作为显示摄像头的面板
     
     
            void OnGUI()
            {
                    if(GUI.Button(new Rect(100,100,100,100),"Initialize Camera"))
                    {
                            StartCoroutine ("InitCameraCor");
                    }
     
                    //添加一个按钮来控制摄像机的开和关
                    if(GUI.Button(new Rect(100,250,100,100),"ON/OFF"))
                    {
                            if (_webCamera != null && Plane != null) {
     
                                    if (_webCamera.isPlaying)
                                            StopCamera ();
                                    else
                                            PlayCamera ();
                            }
                    }
                    if(GUI.Button(new Rect(100,450,100,100),"Quit")){
                             
                            Application.Quit();
                    }
     
            }
     
            public void PlayCamera()
            {
                    Plane.GetComponent<MeshRenderer> ().enabled = true;
                    _webCamera.Play();
            }
     
     
            public void StopCamera()
            {
                    Plane.GetComponent<MeshRenderer> ().enabled =false;
                    _webCamera.Stop();
            }
     
            /// <summary>  
            /// 初始化摄像头
            /// </summary>  
            public IEnumerator InitCameraCor()  
            {  
                    yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);  
                    if (Application.HasUserAuthorization(UserAuthorization.WebCam))  
                    {  
                            WebCamDevice[] devices = WebCamTexture.devices;  
                            DeviceName= devices[0].name;  
                            _webCamera=new WebCamTexture(DeviceName,(int)CameraSize.x,(int)CameraSize.y,(int)CameraFPS);
     
                            Plane.GetComponent<Renderer> ().material.mainTexture=_webCamera;
                            Plane.transform.localScale = new Vector3 (1,1,1);
     
                            _webCamera.Play();  
                    }  
            }
    }


     

     

      5.最后直接运行看效果哈!



    展开全文
  • 获取Unity3D虚拟摄像机的图像
    展开全文
  • unity3d打开外置摄像头

    2020-07-03 23:31:28
    unity3d里可以打开usb连接的外置摄像头在unity3d里可以打开usb连接的外置摄像头在unity3d里可以打开usb连接的外置摄像头在unity3d里可以打开usb连接的外置摄像头在unity3d里可以打开usb连接的外置摄像头在unity3d...
  • Unity3d不久之前正式发布了Unity3d 2017.1, 这个版本的发布也宣告了Unity3d正式告别了5.x时代,并且开始已年份直接命名,开启了新的纪元。那么Unity3d 2017相较上一版本到底有哪些改进呢?这介绍这些改进之前先放出...

    Unity3d不久之前正式发布了Unity3d 2017.1, 这个版本的发布也宣告了Unity3d正式告别了5.x时代,并且开始已年份直接命名,开启了新的纪元。那么Unity3d 2017相较上一版本到底有哪些改进呢?

    这介绍这些改进之前先放出下载地址:Unity 2017.1
    有趣的是通过Unity产品蓝图我们可以发现Unity 2017.2 beta已经提供下载测试并且Unity 2017.3也已经在制作中了。
    这里写图片描述
    Unity 2017.2 beta下载地址:Unity 2017.2 beta

    以下关于Unity2017.1的介绍内容来自Unity官方中文社区,原帖地址:[官方] Unity 2017.1正式版发布

    Unity 2017.1中包含大量新功能与改进。主要内容如下:

    • 艺术家和设计师们:全新的叙事和游戏视频创作工具
      Unity 2017.1为艺术家和设计师们提供了全新的工具,使用Timeline,Cinemachine和Post-processing工具,可以创造令人惊叹的影视内容,合成精美相机镜头,描绘更好的视觉故事。
      Timeline是一款强大的可视化新工具,可用于创建影视内容,例如过场动画、预告片、游戏试玩视频等等。
      Cinemachine是一个高级相机系统,您可以像电影导演一样,在Unity中合成镜头,无需编写任何代码,引领您进入程序化摄影时代。
      Post-processing可以很方便地为场景应用各种逼真滤镜,使用电影工业级技术、控件和颜色空间格式来创造高质量视觉效果,让画面更生动、更逼真,助您描绘更好的视觉故事。
    • 效率:协作、实时操作分析、工具
      我们发布了Unity Teams,它由一系列简化创作者协作流程的功能和解决方案组成,包含Collaborate多人协作(现已发布)和Cloud Build云构建。
      实时操作分析系统引入了新的、更简单的方法,帮助您理解用户,并在不需要重新部署的情况下,对游戏做出动态的反应和调整。
      最重要的是,Unity 2017.1对编辑器进行了大量更新,包括对FBX导入、动画工作流程、2D功能、Asset Bundle工作流和Visual Studio集成的改进。
    • 图形与平台:全面改进
      Unity 2017.1对粒子系统和Progressive Lightmapper进行了大量改进,提供了更多选择来实现您的艺术愿景并控制性能。不同平台可采用不同的渲染品质,例如iOS平台上的Deferred Rendering,和PC上的NVIDIA VRWorks。
      这些都只是Unity 2017.1的亮点概念,下面将介绍完整丰富的细节内容!

    Unity 2017.1新看点

    艺术家叙事工具: Timeline和Cinemachine介绍

    设计师、艺术家或动画师们可以使用新的集成叙事工具,自己制作影视内容和游戏视频,而不用依赖程序员。这意味着开发效率更高,而节约沟通与排队成本。

    Timeline是一款强大的可视化新工具,可用于创建影视内容(例如短片Adam)。通过编排游戏对象、动画、声音和场景,来创建过场动画、游戏视频等等。有了Timeline,您可以专注于叙事和电影艺术创作,而非编码。

    Timeline基于轨道的序列工具,使用“拖放”操作来编排动画、声音、事件、视频等元素,以更快地创建漂亮的过场动画和程序化内容。Timeline有许多功能,例如动画、音频、自动关键帧,以及可以锁定或静音特定轨道的多轨道界面。Timeline可通过Playable API进行扩展,支持创建自定义轨道,来驱动游戏中的任意系统。您可以制作一个Timeline剪辑来表示几乎所有内容——并且可以重复播放、缩放和混合这些剪辑,所有这些都可在Timeline中实现。
    这里写图片描述

    Cinemachine 是多年游戏和电影摄像机的构建经验凝聚而成的结晶。现在,它将业界领先的摄像操作置于所有人手中,引领了程序化摄影的时代。

    这是一套智能摄像机,可以动态的根据场景组成和交互,在最佳时间拍摄最佳镜头。使您摆脱无尽的手工动画、摄像机编程以及修订的过程。

    Cinemachine可以在Asset Store资源商店中下载,现在就添加到您的项目中。

    从第一人称射击游戏到第三人称动作冒险,您可以用Cinemachine彻底改变游戏内摄像机。很容易地:

    • 像电影导演那样,使用高级摄像机工具及真实的摄像机设置,来控制视频序列。
    • 合成镜头,把重点放在艺术方向上,而非实现细节。给Cinemachine智能摄像机一个简单的指示,比如跟随人物的头部,如果动画发生变化,镜头会自动更新并继续正常工作。
      这里写图片描述

      在Unity 2017.1中,我们为Cinemachine增加了很多新功能,比如:

    • 多个目标对象:以多个对象为目标,并设置它们的权重。它基于任意数量的对象创建一个逻辑组,根据其成员的位置来定位自己。在跟踪一组对象时,可以将其用作LookAt和Follow方法的目标。对2D场景也非常适用。
    • 动态取景多个对象:该功能将基于对象的位置自动取景一组目标。如果对象散开,Cinemachine将根据您创建的一套规则调整FOV或推拉(或两者同时进行)
    • 全新开放API:轻松定制Cinemachine配置,获得项目需要的摄像机行为。
    • 推拉轨道:创造出像电影一样的推拉镜头,让摄像机在游戏世界里平滑移动。适合于电影序列,或当您希望摄像机沿着一组轨道跟踪拍摄对象时。
    • 安全镜头:安全镜头会根据镜头优先级与质量,动态选择最佳的摄像机。有东西进了取景框,破坏了镜头?没问题,Cinemachine会切换到下一个最佳摄像机。尤其适用于回放或任何一个可变场景的电影序列。

    Timeline和Cinemachine结合使用,您可以将叙事带入更高的层次。使用后处理栈来进一步创建特效,烘托场景氛围和戏剧效果。
    这里写图片描述

    改进Post-processing栈(测试)

    Post-processing将全屏滤镜和特效应用于摄像机的图像缓冲区,然后再将其显示在屏幕上。您可以使用图像后处理特效来模拟物理摄像机和电影效果。

    最新版的Post-processing栈测试版可以在此下载。最终版预计将于今年夏季发布。(注意:上一个稳定版本可以在Asset Store资源商店中下载)

    改进后的后处理栈将一组完整的图像效果整合到单个后期处理流程中,并带有一系列高质量的摄像机效果:

    • Screen-space anti-aliasing
    • Auto Exposure
    • Motion Blur
    • Bokeh Depth of Field
    • Bloom
    • Color Grading
    • Chromatic Aberration
    • Film Grain
    • Vignette

    您可以将多个特效组合到单个Pass中,使用基于Asset的预设配置系统管理特效也非常轻松。

    颜色分级效果是一种支持Academy Color Encoding System (ACES)的全HDR颜色管线,低端平台可以使用LDR管线。该栈有两个屏幕空间的光照特效,即环境光遮蔽和屏幕空间反射。

    这个新版本还提供了一个基于体积的混合特性,您可以在场景中定义区域(任何类型的网格),并在玩家进入区域时设置特定的氛围/外观。Unity会自动在体积之间进行混合,以实现流畅的外观转换。
    这里写图片描述

    Unity Collaborate多人协作已正式发布!现为Unity Teams一员

    Unity Collaborate多人协作已结束测试,与Cloud Build云构建一起成为Unity Teams的一部分,仅用一个解决方案一套功能,即可帮助您更快速地进行团队协作。Unity Teams将可免费使用至2017年10月。

    点击了解有关Unity Teams的更多内容。

    对于Collaborate多人协作,我们在Unity 2017.1中发布的首个发布版本优先处理了Beta用户提供的反馈。除了性能改进、稳定性和Bug修复之外,我们还增加了一组新功能:选择性推送、更佳的Asset浏览器集成和一个新的“In Progress”功能,用以标志团队成员在某个场景或预制件上有未发布的本地更改。
    这里写图片描述

    以下是我们为Collaborate多人协作添加的一些新功能:

    • In Progress标志
      为场景和预制件添加了In Progress标志,以指示团队中其他人已对某个场景或预制件做出了一些未发布的本地更改。这个特性有助于协作者协调对场景和预制件的更改。
      这里写图片描述
      这里写图片描述

    • 右键单击选择发布
      我们添加了右键单击操作,现在您可以在项目浏览器中直接发布、恢复、查看差异,解决文件冲突。这是一个主要的用户痛点源头,我们希望使Collaborate的行为与其他项目浏览器的行为更加一致。请注意,这种UX允许您选择性地发布已更改的Asset。之前的版本中,您必须发布所有更改。
      这里写图片描述

    • 浏览体验更佳
      在项目浏览器的“收藏”中添加了新的过滤器,包括“所有修改”、“所有被排除”和“所有冲突”,这样用户就可以看到他们所有修改过的文件、所有正在修改的文件、带有冲突的文件和忽略的文件。特别要留意的是“All in Progress(一切都在进行中)”,这让您可以实时看到Collaborate团队中的其他人正在处理哪些Asset(稍后将详细介绍)。
      这里写图片描述

    • 实时操作分析
      Unity 2017.1可以通过数据驱动的实时操作,随时获得丰富的分析数据。深入了解您的用户与您作品的互动情况,并实时做出相应的调整,迎合他们的习惯,无需重新部署新版本。在Unity 2017中,您可以更好地为用户提供更佳的游戏体验。
      通过Standard Events (目前是Beta版)可以进行更高效的洞察,它提供了一组精心设计的预定义事件,可揭示与您游戏相关的重要信息。使用新的Analytics Event Tracker,无需代码即可实现这些功能。
      这里写图片描述
      使用Remote Settings特性,可以即时更改游戏,无需重新部署,该特性已添加到Unity Analytics分析服务中。
      这里写图片描述

    • 2D改进
      在Unity 5.6中,我们为2D游戏开发者对工具和工作流程进行了重大改进。Unity 2017.1中引入了2D Sprite Atlas,这是一种新的Asset,将取代Sprite Packer。随着它的出现,新改进的工作流程可以在运行时更好地控制精灵的打包和使用。图集是Unity中2D工作流程的重要组成部分,而精灵图集不仅提供了更简单的图集创建和管理方式,还有相应的脚本API,可获得更多的控制和用途。
      这里写图片描述
      Sprite Masks用于在世界空间中隐藏或显示精灵或精灵组的一部分。精灵遮罩仅对拥有Sprite Renderer组件或粒子系统的对象生效。
      这里写图片描述
      在Unity 2017.1中,我们还为精灵编辑器添加了精灵物理形状。可以为精灵设置自定义的默认形状,以使用PolygonCollider2D生成碰撞器形状。

    • 动画改进
      我们对Animation窗口进行了全面修改,改进了关键帧的工作流程,使动画制作更方便和熟练,并支持与Animator状态机进行交互。Performance Recording是一个实验性功能。
      新的关键帧工作流程支持明确指定何时将哪帧变为关键帧,并在重新评估/预览动画时,将所有未修改且未关键帧化的属性值都丢弃。我们已经改变了在Animation窗口中编辑剪辑的默认行为(新的默认预览模式)、视觉反馈和全局关键帧操作热键。这些变化的目的是在Animation窗口之外为关键帧操作提供一个流畅的工作流程,同时预览动画剪辑无需处于自动关键帧或录制模式下。
      现在在编辑器中可以对状态机行为进行调试。
      我们还引入了GameObjectRecorder,这是一个新的实验性编辑器特性,它允许您记录GameObject和它子对象上的任何属性。这样就可以轻松地创建动画,将被记录的所有内容保存到一个动画剪辑中。欢迎访问论坛进行反馈。
      这里写图片描述

    • Playables已正式发布
      Playables API通过使用树状结构的PlayableGraph组织和评估数据来源,提供一种创建工具、特效或其他游戏机制的方法。PlayableGraph允许您混合和修改多个数据源,合成为单一输出后播放。
      Playables API支持动画、音频和脚本。Playables API还提供了通过脚本来与动画系统和音频系统进行交互的能力。
      Playable API是一个通用API,它最终将用于视频和其他系统。查看文档了解更多细节。

    • Ambisonic音频
      在Unity 2017.1中,我们增加了对环绕立体声音频剪辑的支持,这是全方位环绕音频技术,它(除了水平面外)还覆盖了听众上方和下方的声源。
      Ambisonics以多声道格式储存。它不是将每个通道都映射到一个特定的扬声器,而是以一种更通用的方式来表示声场。然后,根据聆听者的方向(即XR中用户的头部旋转),旋转声场。声场也可以被解码成一种与扬声器设置相匹配的格式。Ambisonics通常与360度视频结合使用,也可以用作音频天空盒,表现遥远的环境声音。
      我们还添加了Ambisonic解码器插件,而且现在也可以使用正开发中的API,在新的叙事工具Timeline中使用音频剪辑了。

    • 编辑器改进
      我们在UnityEditor.IMGUI.Controls中添加了一个新的ArcHandle类,它可以在场景视图中交互式地编辑弧线。还加入了名为SearchField的新IMGUI控件,它带有普通和工具栏用户界面风格,但也可以自行定制。
      这里写图片描述
      现在还支持使用JetBrains Rider作为外部脚本编辑器。
      其他改进还包括对所有播放器循环阶段添加分析器标签,改进Package Export加载状态,以及记录已连接玩家的日志信息,这些都将出现在编辑器控制台中,使调试更加轻松。

    • 改进了对Visual Studio的支持,包括Mac OS
      Unity安装程序现在可以选择在Windows上安装Visual Studio Community 2017(而非Visual Studio Community 2015)。安装速度显著提高也更轻量。
      Mac用户也别难过,现在可以使用Visual Studio了!微软发布了Mac版的Visual Studio和Tools for Unity。Visual Studio for Mac还提供了许多很酷的功能:一键调试,Unity消息的IntelliSense(完整Unity特定库代码),着色器代码高亮显示等等(点此查看详情)。

    • 场景与Asset Bundle改进
      我们对游戏中的场景和Asset Bundle进行了一些改进。更改底层架构使场景和Asset Bundle加载速度更快,从而使玩家体验更加流畅。我们还创建了一个工具,Asset Bundle浏览器——以帮助创建和优化Asset Bundle。

    • Asset Bundle浏览器
      Asset Bundle浏览器的Beta版与Unity 2017.1一同发布。该工具允许您在Unity项目中查看和编辑Asset Bundle的配置。它的目的是替换当前选择Asset的工作流,并在检视窗口中手动设置Asset Bundle的工作流程。现在您可以集中查看所有的Asset Bundle配置。通过使用上下文菜单和拖放功能,配置、修改和分析相关资源包。
      该工具将标记可能值得关注的警告,并提示将中断资源包创建的错误。从上层查看包集合,您可以更有效地组织Asset Bundle。在更低层查看单个Asset Bundle,您可以看到由于显式包含或依赖项的关系,哪些内容将会放入包中。
      更多细节请查阅文档
      这里写图片描述
      Asset Bundle浏览器可以从Asset Store资源商店下载。

    • 脚本运行时升级(实验性):畅享 C# 6和.NET 4.6
      在Unity 2017.1中,我们引入了实验性版本的脚本运行时内核,该内核已升级到Mono/.NET 4.6运行时。它包含了许多修复、性能改进,可以使用C# 6。我们相信它会提高游戏的整体性能。
      可以在Player Settings中启用.NET 4.6:
      这里写图片描述
      注意,更改该设置会在重启编辑器后生效,因为它会影响编辑器和播放器。对应的脚本API是PlayerSettings.scriptingRuntimeVersion属性。
      IL2CPP完全支持新的.NET 4.6 API,因此您仍可使用C#编写脚本,同时享有原生C++的性能优势。如果您发现任何问题,请访问论坛进行反馈。

    • 模型导入器改进
      从像Maya这样流行的数字内容创作(DCC)工具导入Asset的过程是首批重要的改进对象,这使得DCC工作流程变得更加轻松。最终提高了艺术家和设计师的生产力,减少了程序员的麻烦。
      现在Unity导入从Maya导出的FBX文件已支持Segment Scale Compensation,而且FBX SDK已升级至2016.1.2。
      在导入FBX文件时,我们还添加了计算加权法线的选项,如按面积、角度或二者皆有,以及硬边缘的固定法线生成。现在,可以从FBX文件中导入灯光和摄像机,Unity会自动在需要时为对象添加和配置摄像机和/或灯光组件。
      Unity现在可以使用“Import Visibility”属性从FBX文件中读取可见性属性。值和动画曲线将启用或禁用MeshRenderer组件:
      这里写图片描述

    • Progressive Lightmapper改进
      Unity 2017.1增加了Progressive Lightmapper中对烘焙LOD的支持。在烘焙LOD时,Enlighten和Progressive Lightmapper之间的主要区别在于,使用Progressive Lightmapper不必在LOD周围放置光照探针来获得反射光。在完全烘焙分辨率下,间接光照将为LOD提供更优质的烘焙光照贴图,您也可以避免为它们设置光照探针的繁琐过程。(Unity 5.6中也有此功能。)
      我们还在Progressive Lightmapper中增加了对双面材质的支持,通过添加新的材质设置,使光线与背面接触。启用后,在进行全局光照计算时几何体的两面都被包括在内。当从其他对象观察时,背面不会被认定为无效。背面渲染既不受该设置的控制,也不会在光照贴图中显示。背面使用与正面相同的自发光和漫反射设置反射光线。(该功能也可在Unity 5.6中使用)
      这里写图片描述

    • 实时阴影改进
      我们优化了在稳定模式下,级联定向光源阴影投射器的选择。这意味着生成阴影贴图时会产生更少的Draw Call。这增益是与场景和配置相关的。例如,在四个级联光的情况下,可以看到Draw Call数量显著下降。根据太阳/摄像机的方向,场景中可以减少50%的阴影投射器。下面是维京村庄的一个例子:
      下面的场景在Unity 5.6中有5718个阴影投射器。
      这里写图片描述
      在Unity 2017.1中,相同的场景,只有4807个阴影投射器。
      这里写图片描述
      Unity 2017.1还实现了实时阴影的Percentage Closer Filtering (PCF)。每个像素的深度值都是从当前像素周围的阴影贴图中取样,并所有的采样值进行比较。这使得光和影之间的线条更加平滑。您可以在下图中看到对比:
      这里写图片描述
      除了实时阴影改进,Shadowmask和Distance Shadowmask光照模式现在已成为Quality Setting中的参数,可以在运行时进行修改而无需任何成本。例如,可以在室内使用Shadowmask (实现柔和的阴影),并在相同关卡中的户外场景切换至distance Shadowmask。它也可以作为一个质量设置项。
      我们还添加了Custom Render纹理作为渲染纹理的扩展,可以很方便地用着色器来更新纹理。这有助于实现各种复杂的模拟,比如焦散光、雨滴涟漪模拟,墙面液体喷溅等等。它还提供了一个脚本和着色器框架,以便进行更复杂的配置,比如局部或多阶段更新,不同的更新频率等等。
      这里写图片描述
      有了新添加的LineUtility类和LineRenderer.Simplify函数,现在可以优化线条,用LineUtility创建由简单形状组成的简化版本。
      使用Metal/OpenGL ES3实现iOS上的Deferred Rendering
      我们为A8芯片和以后的iOS设备启用了一个使用Metal和OpenGL ES 3.0的延迟渲染路径。当使用延迟着色时,能够影响GameObject的灯光数量是没有限制的。所有的灯光都是按像素计算的,这意味着它们都能与法线贴图进行正确的交互等等。此外,所有的灯光都可以有剪影和阴影。

    • 粒子系统改进
      我们引入了精灵集成,粒子碰撞力(可以推动碰撞器),大量形状方面的改进,包括一个新的形状类型,噪音模块增加了新选项,以及其他一些较小的特性和增强。因为增加了新的控制和约束,例如速度与对齐,使得在2D中使用粒子更加轻松。可以使用粒子来获得比以往更多的特效和动画效果,包括光线的线条和尾迹。
      通过Texture Sheet Animation模块,我们在粒子系统中增加了对精灵使用的支持。这使粒子系统能更好地进行了图集处理和批处理,同时也在粒子系统中增加了大量与精灵相关的特性,例如不同大小的动画帧,以及每帧的轴心点。
      这里写图片描述
      这里写图片描述
      噪音模块提供了新的选项,可以更好地将噪音应用于粒子效果中。这个功能在Unity 5.5中第一次实现,噪音是被应用到粒子的位置属性。在2017.1中,我们可以将噪音应用到更多的地方:
      -位置
      -旋转
      -大小
      -使用Custom Vertex Streams的着色器(非常适合制作UV失真效果!)
      这里写图片描述
      在粒子系统形状模块的碰撞模式中,我们引入了一个新的甜甜圈粒子发射形状和编辑模式。模块内的Transform可以为粒子发射的形状应用自定义位置、旋转和缩放。
      其他的改进还包括将粒子与速度方向对齐的能力,以及允许在局部空间系统使用Emit over Distance。边缘粒子发射现在更加灵活,可以选择用来产生粒子的边缘厚度。
      粒子现在也可以使用碰撞模块对碰撞器进行施力。
      这里写图片描述

    • Windows Store现在改名为Universal Windows Platform
      Unity现在支持Windows商店的Universal Windows Platform(UWP)应用模式,支持为Xbox One、Windows 10、Windows Phone 10和HoloLens进行构建。
      请注意,对Windows混合现实PC设备的支持将在今年晚些时候发布。
      这里写图片描述
      我们增加了对UWP的多显示支持,现在Unity播放器二进制文件已做数字签名,增加了额外的一层安全性,可以防止对Unity运行时二进制文件进行篡改。
      最后,我们取消了对Windows 8.1和Windows Phone 8.1应用的支持,Unity 5.6是最后一个支持这两个平台的版本。

    • 索尼PS4的视频播放器
      我们在Unity 5.6中引入了一个全新的视频播放器,在Unity 2017.1中正式加入了对索尼PS4的支持,从而完成了对跨平台的支持。PS4的视频播放器使用索尼的AvPlayer库来加速h.264流的解码。解码h.264流(PS4的推荐格式)时,CPU开销非常低。可以同时对最多8个并发h.264流进行解码。它还支持对webm容器中的VP8格式流进行软件解码(更高的CPU开销)。最后,它支持多种视频渲染模式(直接渲染到摄像机的近/远平面,作为材质覆盖,或渲染纹理),音频流可以直接输出或发送到音频源进行混合。

    • 底层原生插件渲染扩展
      我们已经扩展了底层渲染插件API,并提供了一些很酷的新特性:
      -现在可以将用户数据发送到回调函数。
      -我们已经扩展了插件将接收回调的可能事件列表。
      -我们在着色器编译器进程中添加了钩子,可以在发送到编译器之前对着色器打补丁。支持创建自定义关键字所控制的自定义变体。
      -要想了解这些扩展的威力,请查看NVIDIA的VRWorks包,它是实现这一切的基石。

    • VR: NVIDIA VRWorks
      现在,在Unity 2017.1中,NVIDIA VRWorks通过以下特性,为虚拟现实提供了一种全新高度的视觉保真度、性能和响应能力:
      -Multi-Res Shading是一种用于VR的创新性渲染技术,它可以使图像的每一部分都能渲染在一个与镜头矫正图像像素密度相匹配的分辨率上。
      -Lens Matched Shading使用NVIDIA基于Pascal的GPU的新Simultaneous Multi-Projection架构,为像素着色提供潜在的性能改进。
      -Single Pass Stereo使用NVIDIA基于Pascal的GPU的新Simultaneous Multi-Projection架构,仅对几何体进行一次绘制,即可在双眼视图同时投射相同几何体。
      -VR SLI为虚拟现实应用程序提供更高的性能,其中两个GPU可以被指派给特定眼睛,极大地加速立体渲染。
      这里写图片描述
      为了更好地利用这些改进,应该在PC上使用GeForce 9系列或更高的GPU来进行回放。可以访问Asset Store资源商店下载NVIDIA VRWorks for Unity

    • 发布说明
      与往常一样,请查阅发布说明,以了解新特性、改进和修复的完整列表。

    以上内容来源Unity官方中文社区,原帖地址:http://forum.china.unity3d.com/thread-25171-1-1.html
    本文仅做转载和整理。

    by:蒋志杰

    展开全文
  • Unity3D】Helloworld

    2017-04-24 10:22:40
    Unity3D有个好处,是兼容往下的版本。这一点起码比起隔壁的Cocos2dx好多了,Cocos2dx现在都不知道更到什么版本了,3.x只能用VS2012以上的版本玩就算了,还和2.x的语法与配置大相径庭;另外,大家熟悉的SSH三大框架...

    这个游戏引擎大名鼎鼎,容易学,能很快弄出很多好玩的游戏。Unity3D有个好处,是兼容往下的版本。这一点起码比起隔壁的Cocos2dx好多了,Cocos2dx现在都不知道更到什么版本了,3.x只能用VS2012以上的版本玩就算了,还和2.x的语法与配置大相径庭;另外,大家熟悉的SSH三大框架现在更到面目全非,各位玩JAVAEE的都懂……Unity3D其实也和SSH一样,不是版本越新越好,虽然现在Unity3D已经出到5.x了,但4.x才是资料最多,版本最稳定,关键是使用者最多的版本。网上流传着一句话,至少让Unity3d出到当前系列的完整版才用,不然各种坑爹bug弄死你。Unity3d 4.x照样有5.x的各种常用功能,没必要最新的。

    一、Unity3D 4.x下载、安装、配置

    0、安装之前,最好自己先装好VS2010。我用的是cn_visual_studio_2010_ultimate_x86_dvd_532347.iso,大家自己找下,毕竟Unity3D的脚本,基本上是用C#来写的。

    1、其实Unity3D的下载还是有点复杂的,不过国外网站都这样,和Ubuntu的下载差不多,不是说我是抱残守缺,但新版本我不能说用就用,你给我加了许多特效那就不好了,另外,在线安装是什么意思?你不知道我们这里的网络装个.Net Framework、Android SDK都蛋疼的要死,甚至DirectX和Nvidia显卡驱动必须先拔网线的吗?

    所以一般步骤,进入Unity3D的官网:https://unity3d.com/,如下图操作,选择Older versions of Unity获取旧有版本的JDK,这样就不用下载一个下载器。

    2、找到我们的Unity4.x版本的最后一般,直接下载Unity编辑器即可。这个版本比起坑爹的5.x,需要注册,又没有离线模式好多了。


    3、下载之后的安装是无脑的下一步的安装,不过有几个位置需要注意下。

    完整安装是肯定的,毫无疑问。难道以后用到,你还慢慢重装一次,别这么傻。


    然后安装位置这里,安装路径是带Unity\Editor的,不仅仅只有Unity这个根目录的,是的,你没有看错,这里\Editor请不要强迫症去掉,因为你以后这个Unity根目录可能要装些其它支持组件什么的。


    还有就是装完就不要让它直接运行了,我们还要搞些事情。


    4、还需要UniPatcher_v2017.4.exe这种工具弄一下Unity3D,我已经给大家上传了一份:http://download.csdn.net/detail/yongh701/9810237。毕竟Unity3D是类似visual studio一样是要给钱的,作为一个初学者,在我朝这样的土壤里面,先上车后付费大家都懂了吧~

    点击Browse选择,刚才你在安装Unity3D\Editor那个目录!


    然后点击PATCH,等一下就好,等到弹出对话框,提示成功和谐Unity3D,就可以关闭这个工具,直接打开桌面上的Unity3D。

    如下图,选择Create New Project,设置好工程所在的路径,点击“Create”开始开发。


    二、Unity3D的Helloworld

    Unity3D的Helloworld分为两种,一种是纯拖界面的Helloworld、另一种是脚本的Helloworld。

    1、纯拖界面的Helloworld

    这也是传说中UGUI的内容。自从Unity 3D 4.6之后开始支持。类似C#开发窗体那样拖个Label标签的意思。下面是具体步骤。

    (1)如图,选择GameObject->UI->Canvas设置一个“帆布”,其实就是一张画纸,我们上来先做2D。不要以为2D不叫事,现在任何大作的开始菜单、选项菜单,不还还是2D吗?


    (2)之后我们切到Unity3D的2D开发界面,如图。


    (3)我们再于Canvas之上(保证现在Hierarchy界面选择的是Canvas而不是其它)添加一个Text。


    (4)在属性界面设置字号,你有兴趣还可以改改颜色什么的,利用矩形工具设置大小,利用移动工具将其移到Canvas的中央。


    (5)点击上方的播放按钮查看最后的效果。


    2、Unity3D脚本的Helloworld

    这里的意思是,我们通过编写脚本(程序)来创建一个组件。

    1、新建工程之后,在Project窗口选择【Assets】,然后按右键选择【Create】→【C# Script】创建一个新的C#脚本,将脚本命名为Script,其实这个名字也是随便改的,如图所示。


    之后在VS2010写下如下的一段代码:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Script : MonoBehaviour
    {
    
        // Use this for initialization
        void Start()
        {
    
        }
    
        // Update is called once per frame
        void Update()
        {
    
        }
    
        void OnGUI()
        {
            //改变字体大小  
            GUI.skin.label.fontSize = 120;
            //定位显示(左边距x, 上边距y, 宽, 高)  
            GUI.Label(new Rect(10, 50, 900, 120), "Hello World!");
        }
    }
    
    默认函数Start可以理解为初始化函数,Update函数为触发函数,每一帧动作时被执行,OnGUI函数用于绘制UI界面。

    3、之后我们要将这个脚本附着到主摄像机里面,也就是让摄像机执行这个脚本。


    4、之后可以直接点击上方的运行预览下效果。

    三、Unity3D工程的发布

    1、至此,Unity3D的Helloworld开发完毕了,但玩家需要拿到的一个exe,而不是这些,那么如何发布呢?需要将前面的劳动成果保存一下。在菜单栏选择【File】→【Save Scene As】将当前关卡保存在Asset目录内,命名为Hello World。可以看到,我们一共创建了两个文件:一个是脚本文件;另一个是关卡文件,如图所示。


    2、在菜单栏选择【File】→【Build Settings】打开Build Settings窗口,选择【Add Open Scenes】将当前关卡添加到Scenes In Build下面的框中(也可以直接将关卡文件拖入框中),还可以在Build Settings窗口选择【PlayerSettings】,进行更多设置。如图所示。在Build Settings窗口选择【Build】,然后选择保存路径即可将程序编译成独立运行的标准Windows程序。

    3、双击刚才发布的Helloworld.exe,进行一些基本的游戏设计之后,则可以看到如下的效果。这Helloworld简直好玩。

     


    其实纵观整个过程,初始接触Unity3D感觉就像以前在Flash写ActionScript,这里面的场景概念,还有摄像机、光照场景分明就是当年的Flash的2D舞台换成了3dsmax,只是Unity3D用了更多人熟悉的C#来写脚本。所以嘛,Unity3D现在的香火会这样鼎盛,其实还是传承了Flash的一些东西。比起用C++来写语言,无可视化界面的Cocos2dx在这方面不得不说是她的优势所在!


    展开全文
  • 整体如图所示,白色的平面是raw image,摄像头的代码要托到它上面,熊猫就是file,为fbx格式的文件,它和贴图文件(这里是dds文件,一般为图片文件如png等)直接拖进到assets窗口即可,主摄像机不用设置,默认即可。...

    整体如图所示,白色的平面是raw image,摄像头的代码要托到它上面,熊猫就是file,为fbx格式的文件,它和贴图文件(这里是dds文件,一般为图片文件如png等)直接拖进到assets窗口即可,主摄像机不用设置,默认即可。这里有两端代码,一段是摄像头的cam,一段是给cube物体上色用到,同时这里给熊猫和cube添加了旋转的动画(选择相应的物体,window->Animation添加属性,编辑rotation即可)
    在这里插入图片描述
    在这里插入图片描述
    添加Canvas(GameObject->UI->Canvas)和Cube(GameObject->3dobject->cube)。Canvas下面添加Raw image(也在UI的子菜单中),然后开始设置。首先设置Canvas,其属性中的Render mode 和render camera以及plane distance,如下图:
    在这里插入图片描述

    cube上色即COLOR代码:

    using UnityEngine;
    using System.Collections;
    public class color : MonoBehaviour
    {

    // Use this for initialization
    void Start()
    {
        GameObject cube = GameObject.Find("Cube");
        if (cube != null)
        {
            Renderer render = cube.GetComponent<Renderer>();
            render.material.color = Color.green;
        }
    }
    // Update is called once per frame
    void Update()
    {
    }
    

    }
    记得分别拖到cube上。添加后,右下角会多出color(script)一栏,如下图;
    在这里插入图片描述
    添加动画后,右下角会多出animator一栏,如下图:
    在这里插入图片描述

    摄像头即cam代码:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    public class cam : MonoBehaviour
    {

    RawImage cameraImage;
    private WebCamTexture webCamTex;
    
    IEnumerator Start()
    {
        cameraImage = GetComponent<RawImage>();
    
        // 请求摄像头权限
        yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);
        // 如果获取到摄像头权限
        if (Application.HasUserAuthorization(UserAuthorization.WebCam))
        {
            // 获取所有的摄像头设备
            WebCamDevice[] devices = WebCamTexture.devices;
            if (devices != null)
            {
                // 索引为0的摄像头一般为后置摄像头,参数分别为设备名称、图像宽度、高度、刷新率
                webCamTex = new WebCamTexture(devices[0].name, 800, 1280, 30);
                // 实时获取摄像头的画面
                webCamTex.Play();
    
                cameraImage.texture = webCamTex;
            }
        }
    }
    // Update is called once per frame
    void Update()
    {
    
    }
    

    }
    记得分别拖到raw image上,添加后,右下角会多出cam(script)一栏,如下图;
    在这里插入图片描述
    熊猫添加动画后,右下角会多出animator一栏,如下图:
    在这里插入图片描述
    效果如下,旋转的熊猫和立方体,熊猫会一直变换大小且会遮挡立方体的:
    在这里插入图片描述
    可以发布file->build setting…然后选择windows平台,即可生成单独运行的.exe程序,可以分享给任何人了,对方不需要安装unity3D可以看到你的美。
    在这里插入图片描述

    展开全文
  • 陆陆续续又开始更新自己的博客,看来自我驱动能力还是不够啊= =,废话不多说了,之前的内容大概说了一下Unity的一些基础知识,接下来我们将要对一些基本功能做一些学习。大家都知道,一个游戏,少不了摄像机的参与...
  • unity3d 各种优化综合

    2014-09-15 14:49:24
    [基础知识]Unity3d优化与检测方式   本帖最后由 诸葛高原 于 2014-5-21 11:34 编辑  检测方式:  一,unity3d 渲染统计窗口  Game视窗的Stats去查看渲染统计的信息: ...
  • Unity3D常见技术笔试题

    2017-07-03 22:22:24
    网上和实际当中出现较多,遇到较多的Unity3D游戏开发笔试题,不是特别全,但是出现频率较高.
  • Unity3D手机游戏开发

    2019-01-08 08:03:56
    Unity3D手机游戏开发》 基本信息 作者: 金玺曾 出版社:清华大学出版社 ISBN:9787302325550 上架时间:2013-8-7 出版日期:2013 年8月 开本:16开 页码:1 版次:1-1 所属分类:计算机 更多关于 》...
  •  为了准备好学习使用Unity开发VR应用,我们首先要检查下自己的电脑硬件和软件配置是否满足要求。简单来说,显卡要NVIDIA GTX970或AMD290以上,CPU要Intel i5-459以上,内存8GB以上,要有两个USB3.0接口,一个USB2.0...
  • 今天博主想和大家探讨的是RPG游戏中剧情呈现的相关策略,我们知道一个RPG游戏主要是通过将玩家带入到游戏世界中进行某种“体验”进而影响角色的成长。这句话其实指出了RPG游戏的两个特点,即高度的代入感和角色的可...
  • 之前参考的两个教程虽然都不够全面,但是好歹帮助我对Unity3D有了初步的认识,快速实现了一些简单的小功能,培养了兴趣。人们都说,第一步往往是最困难的,因为你什么都不懂,遇到点问题就止步不前了,所以无论如何...
  • 1、基础知识: 标题栏 菜单栏 工具栏:变换工具、gizmos切换、播放控件、层列表、布局列表 功能窗口 2、资源及资源类型:在project里面能够...maya、3dmax创建的模型、动画,用插件输出(fbx、obj)或者软件自己的格...
  • Unity3D 脚本参考

    2012-02-01 09:06:56
    Unity3D 脚本参考 核心提示:一、脚本概览这是一个关于Unity 内部脚本如何工作的简单概览。Unity 内 部的脚本,是通过附加自定义脚本对象到游戏物体组成的。在脚本对象内部不同志的函数被 特定的事件调用。最常用...
  • Unity3d

    2019-11-20 17:37:03
    Unity3d 血条(Health Bar)的预制设计。具体要求如下: 分别使用 IMGUI 和 UGUI 实现 使用 UGUI,血条是游戏对象的一个子元素,任何时候需要面对主摄像机 分析两种实现的优缺点 给出预制的使用方法 IMGUI实现 ...
  • Unity3D心得分享

    2019-07-05 05:14:41
    本篇文章的内容以各种tips为主,不间断更新 2019/05/10 最近更新:使用Instantiate初始化参数去实例对象 ...Unity3D Adam Demo的学习与研究 Unity3D The Blacksmith Demo部分内容学习 Viking Villag...
  • Unity3d 2017

    2019-01-06 21:32:02
    Unity3d引擎的新纪元——Unity3d 2017   来源 http://blog.csdn.net/dark00800/article/details/75209544   Unity3d不久之前正式发布了Unity3d 2017.1, 这个版本的发布也宣告了Unity3d正式告别了5.x时代,并且...
  • 我想把技能做的比较牛逼,所以项目一开始我就在思考,是否需要...我是这么来抽象一个技能的,技能由一堆触发器组成,比如特效触发器,动作触发器,声音触发器,摄像机震动触发器等等,这些触发器到了某个条件就执行触发,触发条
  • Unity中做一个软件驱动两块会移动的显示器进行仿真展示。 为了方便还是把所有的内容都放在一个场景里边展示,并且只使用一台电脑。这样就不要两台电脑进行通信了。 需要设置多块屏幕显示,首先只需要在场景里...
1 2 3 4 5 ... 20
收藏数 665
精华内容 266