LipSync插件调研2

这周会计划研究LipSync方向,会写一些资料记录过程。本篇并不讲详细使用步骤,只讨论其功能实现。

本篇评测的工具实现方式都相近,插件列表如下:

LipSync Pro【U3D】
EasyTalk【U3D】
Lipsync Tool【美术用】
Face and lips

备注:Lipsync Tool不参加本次评测的原因有三 1.Demo下载后只有英语语言模型,不提供其他语言下载 2.主要是美术用在maya或3dmax做插件 3.价格巨贵,最便宜5500$.

评测的方向: 1. 嘴型同步 2.面部表情
评测角度: 1. 实现方式 2. 可用性

阅读全文

LipSync插件调研1

这周会计划研究LipSync方向,会写一些资料记录过程。本篇并不讲详细使用步骤,只讨论其功能实现。

本篇评测的插件列表如下:
SALSA With RandomEyes
UniLip

评测的方向: 1. 嘴型同步
评测角度: 1. 实现方式 2. 可用性

阅读全文

protobuf中使用继承

前两天有一个问题一直困扰我。使用protobuf .net版本的时候序列化类,基类的字段会丢失。随后我问了下朋友无一例外他们都使用的是组合而非继承。我也在反思是否这个做法本身就有问题。我昨天Google的时候发现有人遇到相同的问题,遂在本篇中记录。

阅读全文

编辑器扩展-分割条

可拖动分割条在 Unity3D 的编辑器结构中一般都属于最外层结构,因为它是基于 GUI 组件,计算位置的时候必须要很精确,所以跟Layout 流式布局混编会比较乱。这里也推荐作为最外层结构使用。

可拖动的分割条

阅读全文

UNITY性能优化参考篇

下面是我给项目组的一些参考。其中也包含各种各样的标准,与优化建议。项目优化并不是一件事,它是点点滴滴串联起来的(勿以恶小而为之),我见过很多项目只是图一时之方便就导致后期很难做 比如 前期未规划好图集,模型贴图材质目录混用,UI制作未按照 复用/特殊 的标准制作,动画导出帧率不统一高高低低 等等。如果一开始没有定制良好的规范,后面想要补救只能靠程序写一些工具批量处理,当然这工具也不一定好写。

阅读全文

Unity new API

这里记录一些Unity3D的API 以备不时之需。

阅读全文

SNFramework

起源

2015年 我在淘米写了一套 消息传递机制 当然这一套在我的上家公司也得到验证。
2016年 我在世纪创意基于2015年一版的消息传递进行了封装但是当时赶项目也没有引入。我称之为 SmartNotificationFramework 我希望它能达到足够的灵活,在我看来它工作的还不错,但是太简陋。
2018年 也就是今年我终于得空并且集中时间大量重构与完成了大部分的单元测试。SNFramework 是我正在使用的消息传递机制。它已经有了初步的理想功能,如消息上下分隔离,消息被阅读成功自动释放(即指执行一次),广播消息等。

阅读全文

分析缺氧(Oxygen not included)中所用到的技术

元旦期间玩了缺氧,感觉十分的好玩。属于深度沙盒经营类游戏。既然好玩那就要知其所以然,今天抽空看了看源码,基本上列出所有能找到的工具或技术。算是一个记录,也开阔一下视野。如果你还有什么补充欢迎给我留言。

阅读全文

动态获取AgentTypeID

前阵子我在Github上给Unity团队提了一个issue关于使用代码获取agentTypeID,说来惭愧是我自己的没找到对应的代码。在我使用另外渠道获取此ID的时候 Unity团队已经默默给我回复了这个issues.先说说我的解决方式,由于代码设置 agentTypeID 的时候需要给一个Int类型变量,这个变量其实是对应了一个枚举,我在UnityEditor Inspector的Debug窗口中直接获取了对应AgentTypeID. 笑. 本文记录我获得答复的过程,换个角度想想其实也能发现另外的解决方案即使不知道也没关系

解决方案

阅读全文

三维向量曲线平滑算法

在网上看到一个平滑算法,很好用,经过我测试 效率很高,Chaikin 函数调用2-3次会获得一个相对较好的曲线。算法链接
原理是不断的裁切三角形让其分裂成2个三角,2个三角变成4个,以此类推,最终会越来越平滑从而接近一个圆。

裁切范例

阅读全文

使用物理检测范围与距离内的目标

分享一个技围检测脚本,用来判定范围内是否有目标,或者是线性范围内是否可见目标。

简洁范围检测

阅读全文

解决NavmeshAgent寻路边界的判定

今天群里有兄弟问: “我看到navmeshagent里面有个方法叫什么获取网格边缘点的,我打算首先判断目标点在不在网格上。在的话正常逻辑,不在的话判断当前agent的位置有没有到那个边缘点 “ 。我想这样应该能解决这个问题。

解决边界点的判定

阅读全文

High-level NavMesh Building Components

高级 NavMesh 组件说明文档

NavMesh Surface 脚本 ,在此之前 我看了网络上的一篇介绍 进击的新版NavMesh系统:看我飞檐走壁 效果非常好。我一边测试一边记录关于Surface的用法。

NavMesh Surcefa组件表示特定NavMeshAgent类型的可行走区域,并定义应该构建NavMesh的场景的一部分。

NavMesh Surface组件不在标准Unity安装中; 有关如何访问它的信息,请参阅高级NavMesh构建组件的文档

要使用NavMesh Surface组件,导航到GameObject> AI> NavMesh Surface。 这将创建一个空的GameObject,并附带一个NavMesh Surface组件。 一个场景可以包含多个NavMesh表面。

阅读全文

Building a NavMesh

创建导航网格与Unity2017面板详细参数说明。

阅读全文

Navigation System In Unity

时间仓促,大部分采用google机器翻译来不及全部校对翻译成中文资料 本篇作为笔记。感兴趣的可以看下。这篇是记录Unity3D寻路的官方文档阅读体验。

The Navigation System allows you to create characters which can navigate the game world. It gives your characters the ability to understand that they need to take stairs to reach second floor, or to jump to get over a ditch. The Unity NavMesh system consists of the following pieces:

Unity3d的寻路系统大概有下面几个部分:

NavMesh(导航网格的缩写)是描述游戏世界的步行表面的数据结构,并且允许从游戏世界中的一个步行位置到另一个步行路径找到路径。 数据结构是烘焙的网格里获取的。

NavMesh (short for Navigation Mesh) is a data structure which describes the walkable surfaces of the game world and allows to find path from one walkable location to another in the game world. The data structure is built, or baked, automatically from your level geometry.

NavMesh Agent组件帮助您创建角色,在向目标移动时避开彼此。Agent使用NavMesh理解游戏世界,他们知道如何避免彼此以及移动障碍物。
离网链接组件允许您合并无法使用可走行的曲面表示的导航快捷方式。 例如,跳过沟渠或栅栏,或者在走过它之前打开门,都可以被描述为“Off-mesh”链接。

NavMesh Agent component help you to create characters which avoid each other while moving towards their goal. Agents reason about the game world using the NavMesh and they know how to avoid each other as well as moving obstacles.
Off-Mesh Link component allows you to incorporate navigation shortcuts which cannot be represented using a walkable surface. For example, jumping over a ditch or a fence, or opening a door before walking through it, can be all described as Off-mesh links.

NavMesh障碍组件允许您描述Agent在航行世界时应避免的移动障碍。 物理系统控制的一个桶或一个箱子是一个障碍的好例子。 当障碍物移动时,障碍物尽力避开它,但是一旦障碍物变得静止,它将在导航网上挖一个洞,使得障碍物可以改变它们的路径来绕过障碍物,或者如果障碍物妨碍路径 方式,Agent可以找到不同的路线。

NavMesh Obstacle component allows you to describe moving obstacles the agents should avoid while navigating the world. A barrel or a crate controlled by the physics system is a good example of an obstacle. While the obstacle is moving the agents do their best to avoid it, but once the obstacle becomes stationary it will carve a hole in the navmesh so that the agents can change their paths to steer around it, or if the stationary obstacle is blocking the path way, the agents can find a different route.

阅读全文