unity

【官方】Unity 机器学习 ML-Agents (三)使用Docker实现ML-Agents功能

人盡茶涼 提交于 2019-11-27 23:11:10
原文: https://mp.weixin.qq.com/s?__biz=MzU5MjQ1NTEwOA==&mid=2247492034&idx=1&sn=9b939f8c8a3e6c3e37ba7eb14002f221&chksm=fe1dd569c96a5c7f65eb20f989722f5fbd1cca1c9aeacb388480df2cdfd0ec11049a8f2f5007&mpshare=1&scene=1&srcid=0502YLzroxHLPOaIMR5jLPgo#rd 之前已经为大家介绍过《 Mac下配置Unity机器学习代理工具 》和《 Windows 10下配置Unity机器学习代理工具和TensorFlow环境 》,但是还是不少开发者表示配置环境是个难题,一部分使用者对于安装TensorFlow、Python等工具链比较头疼。 现在随着 Unity机器学习工具ML-agents v0.3 beta版的发布 ,今天由Unity技术经理鲍健运向各位推荐一种比较方便的“实验性”解决方案: 使用Docker在Windows和Mac平台下进行ML-Agents的训练与推理 。 这种解决方案还存在一些限制: 目前的设置会强制让TensorFlow和Unity使用CPU进行计算。(当然,如果你是没有N卡的Mac用户,原来的解决方案也是一样的情况。)

Unity3D && ML-agents 入坑指导

岁酱吖の 提交于 2019-11-27 23:09:25
Unity3D && ML-agents 入坑指导 @[toc]( Unity3D && ML-agents 入坑指导) 一、安装之类的基本操作 1.1 无非是安装unity、下载ml-agent工具包之类的 1.2 导入ML-agents工具包 1.3 导入**TensorFlowSharp**插件 二、Ball3D入门操作 三、训练、查看训练效果 3.1 在Unity中训练 3.2 利用Jupyter Notebook训练 3.3 利用TensorBoard查看训练效果 3.4 导出TensorFlow模型 这只是一篇官方文档的搬运工,嫌文档翻来翻去麻烦,自己总结一下,也方便后来人少走弯路。 操作环境: Windows 10 Anaconda TensorFlow 1.7.1 (注意:必须是该版本) CUDA 9.0 Unity 2018.3.9f1 (64-bit) Unity ML-Agents Toolkit (Beta) 一、安装之类的基本操作 1.1 无非是安装unity、下载ml-agent工具包之类的 ML-agents的Github仓库 安装Anaconda、TensorFlow等的详细过程 1.2 导入ML-agents工具包 打开Unity File –> Open Project 打开 ml-agents-master (就是从Github上下载的ml

玩转Unity中的ML-Agents 机器学习(三):BallacceBall 案例训练

末鹿安然 提交于 2019-11-27 23:08:59
转载注明出处,QQ群:142617170 , 欢迎进群交流! 运行Unity 的ML-Agents所需要的环境都搭好之后,就可以实际探索工程内的官方案例。这一篇我们以官方工程内的3D BallanceBall 案例来说明整个机器学习的流程以及在这个过程中博主所遇到的一些问题。 随着新的ML-Agents v0.3的发布,我更改了教程中的一下过时的内容。 源英文文档的教程地址:https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Getting-Started-with-Balance-Ball.md 最开始看到这个工程,有很多点和设置也许我们不是很清楚,看不懂,但是没关系,后面我们慢慢了解。这一篇主要是介绍整个流程,按照这个流程走可以训练我们所设置的AI。流程如下: 一。Unity编辑器设置: 1.用unity2017.1 或以上的版本打开从github上下载的ML-Agents工程。并找到Assets/ML-Agents/Examples/3DBall/,打开scene文件。 2.选择Edit--->Project Settings ---> Player, 将Resolution and Presentation ---> Run in Background 勾上,并将Display

玩转Unity中的ML-Agents 机器学习(二):Unity环境搭建

夙愿已清 提交于 2019-11-27 23:07:35
转载注明出处 Unity 机器学习交流群:142617170 欢迎大家入群交流 随着ML-Agent v0.3 版本的更新,对博文中的许多内容做出修改 这篇博文是根据Unity ML-Agents 的官方github中的readme里总结而来,英文好的同学可以直接移步github,具体网址如下: https://github.com/Unity-Technologies/ml-agents/blob/master/docs/installation.md (这个传送门已经过时) 最新传送门如下: https://github.com/Unity-Technologies/ml-agents/blob/master/docs/Getting-Started-with-Balance-Ball.md 1. 要使用ML-Agents 必须要将Unity版本升级到2017.1版本及以上 2. 下载ML-Agents 的工程。直接从github上下载到本地即可。下载完之后,还需要下载一个TFSharpPlugin 插件。这个插件有200多兆,github上有相应的下载地址,但是国内的下载速度令人发指,因此我将该插件上传到了QQ群中,如有需要该插件,加入群之后,直接从群文件里下载即可。 从github上下载下来的工程只是拥有了一个可以导出到python环境里进行AI训练的功能

Unity3D存储PlayerPrefs 用法

对着背影说爱祢 提交于 2019-11-27 22:25:24
using UnityEngine; using System.Xml.Serialization; using System.IO; public class StateStorage{ public static T LoadData( string key ){ if ( PlayerPrefs.HasKey( key ) ) { XmlSerializer serializer = new XmlSerializer( typeof( T ) ); StringReader sr = new StringReader( PlayerPrefs.GetString( key ) ); return ( T )serializer.Deserialize( sr ); }else{ return default(T); } } public static void SaveData( string key, T source ){ XmlSerializer serializer = new XmlSerializer( typeof( T ) ); StringWriter sw = new StringWriter(); serializer.Serialize( sw, source ); PlayerPrefs.SetString( key, sw.ToString()

Unity 渲染教程(二):着色器基础

爷,独闯天下 提交于 2019-11-27 20:48:11
转载: https://www.jianshu.com/p/7db167704056 这是关于渲染基础的系列教程的第二部分。这个渲染基础的系列教程的第一部分是有关矩阵的内容。在这篇文章中我们将编写我们的第一个着色器代码并导入纹理。 这个系列教程是使用Unity 5.4.0开发的,这个版本目前还是开放测试版本。我使用的是build 5.4.0b10版本。 对球使用纹理。 1. 默认的场景 当你在Unity中创建新的场景的时候,你将使用默认的相机和定向的光源。 通过GameObject / 3D Object / Sphere这个菜单项来创建一个简单的球体,然后把这个简单的球体放在原点,并把相机放在它的前面。 默认场景中的默认球体。 这是一个非常简单的场景,但是已经有很多复杂的渲染内容了。为了更好地抓住渲染过程,摆脱所有奇怪的东西是非常有帮助的,首先让我们只关心渲染的基础部分。 1.1 剥离那些和渲染无关的内容 通过菜单项Window / Lighting来查看场景的光照设置。 这将打开一个具有三个选项卡的光照窗口。我们只对默认情况下处于激活状态的“场景”选项卡感兴趣。 默认的光照设置。 这是一个关于环境光照的部分,你可以在其中选择天空盒。这个天空盒目前用于场景背景、环境光照和反射。让我们将其设置为none进行关闭。 在你进行设置的时候,你还可以关闭预计算和实时全局光照的面板

Unity3D HTTP协议 网络通信 post get

折月煮酒 提交于 2019-11-27 18:32:59
private float mJindu = 0; private string mContent; public float getJindu() { return mJindu; } //POST请求(Form表单传值、效率低、安全 ,) IEnumerator POST( string url, Dictionary< string , string > post) { //表单 WWWForm form = new WWWForm(); //从集合中取出所有参数,设置表单参数(AddField()). foreach (KeyValuePair< string , string > post_arg in post) { form.AddField(post_arg.Key, post_arg.Value); } //表单传值,就是post WWW www = new WWW(url, form); yield return www; mJindu = www.progress; if (www.error != null ) { //POST请求失败 mContent = "error :" + www.error; } else { //POST请求成功 mContent = www.text; } } //GET请求(url?传值、效率高、不安全 )

Unity Http 消息发送与接受

二次信任 提交于 2019-11-27 18:32:46
参考: https://blog.csdn.net/mseol/article/details/54138762 https://blog.csdn.net/h570768995/article/details/50386935 https://stackoverflow.com/questions/16910788/unity3d-post-a-json-to-asp-net-mvc-4-web-api 图片和base64互转 https://blog.csdn.net/jiangyangll/article/details/80566330 C# int和byte之间的互转 https://blog.csdn.net/zuoyefeng1990/article/details/71480499 短链接使用WWW或 UnityWebRequest 发送请求 WWW的构造函数有3种: 1.只发送http请求,不带参数 public WWW(string url); 2.使用表单发送带数据的http请求 public WWW(string url, WWWForm form); public WWW(string url, byte[] postData);// 这个数据头默认好像是表单 3.使用json发送带数据的http请求 public WWW(string url, byte

Unity——WWW相关知识精要,Get/Post请求,如何判断机型进行本地资源文件下载。

♀尐吖头ヾ 提交于 2019-11-27 18:32:35
Unity中WWW是什么: 通过Unity官方的API文档可知: 翻译: 简单地访问web页面。 这是一个用于检索url内容的小型实用程序模块。 您可以通过调用WWW(url)来在后台启动下载,它返回一个新的WWW对象。 您可以检查isDone属性,查看下载是否已完成或生成下载对象,以自动等待直到它(不阻塞其余的游戏)。 WWW可以用来做什么: 简单的来说就是可以进行下载资源和打开一个Web网站,包含: Get/Post请求,本地资源文件下载,服务器资源下载 。 Get和Post请求之间的区别: Get: 1.一个链接中,参数是包括在链接中的,链接中的?后面都是参数; 2.服务器不会自动分配空间,传输的内容会比较小。 Post: 1.参数在表单里面。 2.服务器在底层检测到是Post请求,则会自动分配一个大的空间 3.例如声音,视频等比较大的数据 Get请求 public IEnumerator SendGet(string url) { WWW www = new WWW(url); // 利用协程在下载结束之前不会执行下面的代码 分片执行 yield return www; // 判断 下载 是否有错误 if (string.IsNullOrEmpty(www.error)) { Debug.Log("finish=="+ www.text); } } void Start (

Unity的WWW类的用法整理

坚强是说给别人听的谎言 提交于 2019-11-27 18:32:20
Unity的WWW类的用法整理 1. Unity的WWW类主要支持GET 和POST两种方式。GET方式请求的内容会附在url的后面一起做为URL向服务器发送请求(请求的内容使用&符号隔开);而POST方式中向服务器发送请求的数据是以一个数据包的形式和url分开传送的,相比GET方式,POST的优点:1.比GET安全;2.传输数据没有长度限制; 综上所述:在项目中使用POST 方式多一些。 以下为具体的用法,因为GET用法简单,主要说POST的用法: (1).一种GET方式: using UnityEngine; using System.Collections; public class example : MonoBehaviour { public string url = "http://images.earthcam.com/ec_metros/ourcams/fridays.jpg"; IEnumerator Start() { //在C#中,需要用到yield的话,必须建立在IEnumerator类中执行。 WWW www = new WWW(url); //定义www为WWW类型并且等于所下载下来的WWW中内容。 yield return www; //返回所下载的www的值 renderer.material.mainTexture = www.texture;