4 笔端的年华

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 11w+

Unity 等高线数据 生成山体

Unity使用等高线数据生成山体等高线数据通过QGIS导出{ "type": "Feature", "properties": { "fid": 3042, "ID": 3041, "ELEV": 220.0 }, "geometry": { "type": "LineString", "coordinates": [ [ 116.14026623630302, 40.045426917886395 ], [ 116.140266236144541, 40.045426917569436 ],

2020-09-27 12:02:32

Unity 制作编辑器工具的注意点

Unity中制作Editor工具,采用的OnGUI的方式,因此比较麻烦,也有很多容易犯的错误。GUI、GUILayout、EditorGUI、EditorGUILayout这4个类是用来绘制界面的。GUI和EditorGUI是一组。EditorGUI是Unity封装过的,里面有很多可以直接调用的函数用来绘制特殊字段,例如Int,Object,Float等GUILayout和EditorGUILayout是一组。Unity封装了一个布局的功能。一、GUILayout和EditorGUILayo

2020-07-29 19:50:14

Unity 制作蓝图工具 C#中的技巧

最近花了两周时间,终于完成一个很简单的蓝图工具。其中我觉得比较复杂的,就是数据转换和数据计算,因为蓝图中数据类型是没办法直接获取到的。计算的时候不可能罗列所有类型的相互计算,因为类型大多了。由于数据要序列化,所以要保存类中的字段是可在Unity可序列化的,例如:Type 和 MethodInfo 以及 object 就不行object不能序列化就导致反射函数的参数需要转换,带来很多麻烦一、定义保存数据的类 [Serializable] public class Serial

2020-07-28 16:49:21

Unity Shader 中空间还原

在做一些后处理Shader的时候,很多情况都需要对屏幕空间中的坐标还原到世界坐标。一、还原原理_CameraDepthTexture保存了物体的深度信息,深度信息可以直接通过uv采样到。假设获取到了屏幕空间中A像素的深度信息,如果要得到A像素的世界坐标,还需要一个方向,深度信息是长度。这个方向,应该是A像素投影在屏幕坐标的点指向A像素世界坐标的点。然后通过方向乘以深度就得到物体在相机空间下的坐标,然后加上相机的世界坐标,就得到了物体的世界坐标。二、计算方向唯一的难点就是计算方向,这里可以计算

2020-07-15 09:50:16

Unity移动端、WebGL 四边形线框Shader 实现

本文不是使用GeometryShader!移动端和WebGL由于一些限制不能使用GeometryShader,因此不好实现线框Shader。一、手动绘制有的人可能会选择用GL画线来实现绘制线框,具体就是读取mesh信息然后绘制线条,但是GL绘制不能调整线条粗细。有的人可能有回使用LineRender或者直接用圆柱体。这样确实可以调整粗细,但是性能堪忧。。。手动绘制,基本大一点的Mesh就会严重影响性能,不是很可取。二、通过Mesh传参数线框用shader实现的难度,就是很难找到三角的

2020-07-03 10:57:44

Unity 优化场景的一些方法

在做一些项目的时候,可能美术模型不标准,加上只关心好看,不关心性能。因此到最后整个场景运行费劲。以下是我在做webgl工程时,积累的一些优化经验,尽量不影响效果。一、模型检查首先检查美术的模型,这里检查模型,不是检查顶点三角数量,因为这可能影响效果。主要检查贴图,材质。美术在搭建场景的时候,都习惯用standard shader。然后一些模型只是因为颜色不一样,就用了两个材质球,模型贴图完全没有合并。有的模型还有submesh,但是submesh材质球只是贴图不一样。解决方法:我自己写了一个

2020-06-24 17:22:35

Unity 3D 热力图效果实现

效果图一、动态创建mesh首先需要创建一个Mesh,当然这不是必须的,可以使用plane,自己创建主要方便控制精度。修改顶点高度,如果顶点不够可能不够平滑,太多又浪费资源。因此最好根据实际需求大小生成。 private void CreateMesh() { float perxlength = mapSize.x /(meshSize.x - 1); f...

2020-05-26 11:10:17

Unity Surface Shader 使用其他组件颜色

自己新建的shader ,使用在linerender或者Image等组件上面的时候,这些组件的颜色修改不能影响到材质球。lineRender的颜色渐变是很实用的功能。lineRender颜色能够改变材质颜色,是因为LineRender修改了模型点的颜色。然后Shader通过这个颜色去混合材质球颜色就能实现LineRender控制材质颜色了。顶点片段着色器可以在顶点片段中获取顶点颜色,然后传入片段着色器。这里主要说一下SurfaceShader,因为不太常用到。自定义顶点函数 #pr..

2020-05-22 09:46:56

修改北斗AR地球仪激活验证

北斗AR地球仪,手机安装app后需要扫描二维码激活,二维码又需要购买地球仪。所以我就想着跳过激活验证一、ILSpy首先取出Assembly-CSharp.dll。验证部分的代码在这里面,因为我在java部分代码找过没发现。然后把这个dll反编译出来后,通过开始按钮找到了判断激活的代码。使用ILSpy只是为了确认代码位置,因为C#代码容易找到逻辑位置。找到之后就要修改这个Dll,...

2020-04-17 18:40:43

Android 通过OpenGl更新Unity图片

这个文章是针对Unity 制作的Android程序java代码部分获取到图片数据,如果要传递到unity,应该怎么做呢?首先说一下为啥会有这个需求:如果Unity程序需要外接一些图像设备,例如外接红外摄像头。Unity并不能直接获取到图像数据,首先需要需要在AndroidStudio中做好设备接入工作(驱动程序之类)。然后设备会通过Usb接口返回图像数据,这个数据然后通过java代码传...

2020-04-10 17:16:25

Unity Image 原图比例控制

Image图片在使用的时候,我们总希望它保持本身比例,这样美术图片就不会变形了。一、Preserve Aspect这个选项可以控制图片渲染保持本身比例。它会根据rectTranform 的width 和 height 计算能保持比例的最大渲染尺寸。如图中,图片比例是1:1,rectTranform的height大于width ,因此渲染尺寸的width为rectTransf...

2020-04-09 13:52:06

Unity C#代码编译dll

在做Unity的SDK时候,因为部分代码不希望用户误修改导致错误,例如一些固定数据。因此可以将这部分代码编译为Dll,然后在Unity中调用。首先打开VS创建新项目选择.NetCore类库。.NetFrameWork也是可以的。首先添加自己需要的依赖项,这里主要看你的代码中,引用了unity那些类然后可以直接把Unity中写好的C#类复制过来。整体好后,确定代码没有报错了...

2020-04-08 13:10:38

Unity Android Usb 通信

Unity 监听安卓USB得插拔,以及数据通信(安卓是主)因为不想通过Android 继承 Unity的activity这种方式实现(需要修改manifest)。所以具体实现方式是在Unity的Update中获取所有usb设备,然后自己判断插拔。 usbManager=(UsbManager)context.getSystemService(Context.USB_SERVICE...

2020-04-03 16:13:41

EasyAR4.0开发 (SpatialMap空间地图五)

这篇文章讲一下SparseSpatialMapWorkerFrameFilter这个类首先说明一下其他几个类的作用,可以查看EasyAR了解这几个类的具体作用SparseSpatialMap//提供SparseSpatialMap系统主要的功能,地图生成和存储、地图加载和定位,同时可以获取点云,平面等环 境信息并进行...

2020-03-11 15:52:12

EasyAR4.0开发 (SpatialMap空间地图四)

这篇文章主要通过SpatialMap_Sparse_ImageTarget这个场景,说明一下实现稀疏空间地图的脚本。一、SparseSpatialMapController脚本

2020-03-10 10:33:32

EasyAR4.0开发 (SpatialMap空间地图三)

这篇文章主要针对SpatialMap_Dense_BallGame场景讲一下DenseSpatialMapBuilderFrameFilter 和DenseSpatialMapDepthRenderer 这两个脚本。一、场景分析EasyAR4.0的所有功能都模块化了,SpatialMap_Dense_BallGame这个场景中绿色框的物体上面挂载的脚本就是实现稠密空间的脚本了。...

2020-03-05 16:58:49

EasyAR4.0开发 (SpatialMap空间地图二)

这篇文章主要讲一下EasyAR4.0 稠密空间示例场景的打包运行一、创建基于4.0的许可证密钥链接就和之前创建一样,只是在选择的时候选择EasyAR Sense 4.0。这个id要和工程id对应上二、创建工程(我这里使用的安卓测试)新建一个Unity安卓工程,导入EasyARSense_4.0.0-final_UnityPlugin_Samples 下载链接修改工程P...

2020-03-05 16:16:29

EasyAR4.0开发 (SpatialMap空间地图一)

EasyAR发布4.0版本,其中有一个特别重要的技术就是SpatialMap。Easy把这个技术又分为了稀疏空间地图和稠密空间地图。AR程序发展到现在,识别空间始终是比较麻烦的事情,之前的识别图只能通过特定图片寻找到虚拟和真实的交界。这对用户来说体验感是远远不够的。虚拟的模型想要在真实的世界中更加完美呈现,一是关照效果阴影的体现,还有更重要的就是遮挡关系,物理阻挡的体现。如果可以多人共享一...

2020-03-05 14:17:58

Unity 多机器的视频不卡帧同步

视频同步不同于图片帧同步,因为图片帧同步只要传递帧数,然后加载相应的图片就行。一、使用VideoPlayer做视频时间同步最开始想到的方法就是这样,因为时间是视频位置的控制。使用UDP测试之后发现,在给VideoPlayer设置播放时间的时候,会有卡顿的现象。估计是要解析这个时间的视频数据,所以就觉得可能是VideoPlayer解析能力不能,其实本来也不行。于是就用了EasyMovieTe...

2020-03-03 15:29:48

Unity 语音通话功能

一、录制语音Unity自带Api public RecognizeVoice() { string[] microPhoneName = Microphone.devices; if(microPhoneName.Length > 0) { _microphone = microPhoneName...

2020-02-25 15:30:03

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享达人
    分享达人
    成功上传6个资源即可获取