All Houdini Machine Learning

Houdini PDG 点云数据批量生成高度图

    这边的目标是实现在Houdini批量处理所有的点云地形数据生成高度图。     首先第一步就是要实现处理点云数据生成高度图的HDA文件     这里面首先是处理一下点云,使得更好的表述地形。这个部分就不细讲了,见另外一篇我专门讲怎么处理地形点云数据的文章。     然后往下有一个特殊步骤,用于生成我们输出的高度图的文件名。 这一步的计算结果就是detail面板底下我们有了这个outfilename的对象,并把它暂时存储在null节点OutFileName里面。     下一步就是添加了heightfield_output节点用于输出高度图,这里面的文件名就是上面我们计算保存的输出文件文件名。其他的参数则是按需设置。     至此我们就实现了单个地块的点云数据输出高度图,然后我们来看怎么批量处理数据。     首先我们要把上面的包装成一个Hda文件并设置参数。如下图所示,我们这里的参数就两个,一个是Pts输入文件名,输出的文件名由于是自动生成的,就不需要输入。还有就是存成高度图的按钮。 …

All Houdini Machine Learning

LAStools 处理点云数据

    对于直接下载的原始点云数据,不处理的化你是很难得到想要的地面信息啥的。因此这边记录的就是如何使用LAStools工具来初加工这些数据,为后续Houdini精加工数据做铺垫。     原始的点云数据下载地址: https://cloud.sdsc.edu/v1/AUTH_opentopography/PC_Bulk/DOGAMI/ 这里下载的点云数据格式大多数是.laz,这是一种.las格式的压缩格式。     LAStools下载地址: https://rapidlasso.com/ 下载完解压后,在目录下的bin文件夹下就是我们要使用的这些工具。 打开Cmd.exe,cd到这个bin目录即可在命令行使用这些工具。     我们期望从原始的点云数据获得的信息是:地形数据,植被数据,建筑数据。我们下面讲解一下获得这些数据的操作。     首先拷贝一个测试数据集:例如这里我们用的是 ot_44121C8101.laz。 然后输入以下命令获得 …

Advanced Game Tech All Machine Learning

Phase-Functioned Neural Networks for Character Control

理论部分:     http://theorangeduck.com/page/phase-functioned-neural-networks-character-control     视频内容: 讲者背景:角色动画机器学习方向的博士毕业, 动画系统,中间的就是黑盒,就是动画系统 用户输入动画系统的是按钮的指向信息,如图所示的平面的指向,是比较高级的指令,比如我们想走向哪个方向。 动画系统则像是巨大的状态机,不同的状态对应不同的动画,之间会有动画混合。这个复杂的系统直接写代码比较复杂,很难维护, 因此我们重新考虑能不能用一个简单的算法来实现这个复杂的动画交互系统。 我们希望动画系统的输入输出就变成一些参数而已。 我们再来看原来的复杂的动画系统,如果把输入输出看作是动画模型的参数,那么也是可以做到的,就像是在一个巨大的数据库里面挑东西输出。 因此我们希望做到的第二点就是直接输出下一个pose 当然可以,基本思想就是把动画系统当作是黑盒,我们给一些输入就有想要的输出,后面具体讲做法。 输入x:Trajectory Positions, Directions, Heights;Previous Joint Position, …

Advanced Game Tech All Machine Learning

AIAnimation使用代码分析

历尽艰难跑起来了,问题是没有办法操作,猜测Ubuntu和windows的操作代码不兼容,代码分析部分的主要目标之一就是把操作改掉:     代码结构分析 一切从main函数开始: 首先是SDL初始化,Simple DirectMedia Layer(SDL) is a cross-platform development library designed to provide low level access to audio, keyboard, …

Advanced Game Tech All Machine Learning

AI4Animation 工程

这里尝试非常多次还是没有办法对于里面的demo信息完整打开且没有报错,可以跑的demo。 因此我们在AIAnimation的基础上首先来看看这个工程怎么使用起来。     首先来看重点在角色,我们来看其角色的构造: 上面是两个demo的使用结构,可以看到就一个重要的csharp文件,我们来对比分析。 Original对应的是Siggraph17的内容,Adam对应的是Siggraph18的内容,我们先来看17。     首先看大的结构: 第二个类继承Editor对象,作用是在editor里面形成层级菜单Animation,其余的三个则是分别由另外的三个类来完成。 这三个对象也分别形成了三个子标签菜单项,如上面所示的图。 NeuralNetwork 这个类,里面只做了一件事情,就是让用户选择NN模型,也就是说这个类处理的是交互UI表现和逻辑,没有其他。NN里面应该包含的信息都在Model这个类里面。下图就是model里面存储的数据结构: 然后我们来看接口函数: 这边是为了兼容和扩展多种的NN方法设置的接口。 剩下的就是一些Tensor相关的函数,Tensor是对Eigen数据的封装,其真实的计算实现都是由Eigen实现的,这边同时提供了一堆的数据结构关联操作的方法。 最后model里面涉及的比较重要的内容就是Parameters,这边unity里面主要做的就是加载读取和存储方法。 Controller 这个类,处理的是Input,主要就是WSADQE. 还有一个很重要的变量是Styles数组,记录的应该是状态权重。 Character …

Advanced Game Tech All Machine Learning

AIAnimation 工程安装

GLEW,GLUT库安装: http://newx3d.cn/2017/07/13/%E5%9C%A8win10%E5%92%8Cvs2017%E4%B8%8B%E5%AE%89%E8%A3%85opengl%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83/ 主要就是搜索路径:Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.10.25017\lib\x64 opengl安装非常关键,结果路径是: SDL库安装: https://blog.csdn.net/bo_wen_/article/details/49080631 Eigen配置(不行就编译一下): https://blog.csdn.net/sda42342342423/article/details/78201170 glm安装: 同eigen,只需要链接正确就行! 最后千万不要忘记了:    

All Machine Learning

Machine Learning Techniques Lecture 15: Matrix Factorization

    内容: Matrix Factorization(矩阵分解)模型,一开始先讲linear network里面通过对ID这样的特征编码来萃取特征,然后讲基本的 matrix factirization演算法,要做的事情就是在两个特征之间交互的 做 linear regression,同时你也可以用SGD来做,这是一个有效率的方法,而且可以根据应用做适当的调整,最后总结了一下 extraction model。         上一讲: Raidal Basis Function Network,就是把原来的原始数据通过k-means算法来找出代表,通过使用RBF函数来替代,然后整个方法就可以转化成linear …

All Machine Learning

Machine Learning Techniques Lecture 14: Radial Basis Function Network

    内容: Radial Basis Function Network 模型,其hypothesis就基本是一堆RBF,比如高斯函数,用这些RBF作为代表来取代NN里面的神经元;学习的过程中如果决定了中心是哪些之后,剩下的就是做一步linear aggregation;然后我们介绍了k-means演算法来用于决定中心,其算法的核心就是 alternating potimization,对里面的变数交叉做最佳化;最后我们举例图示加深印象。         回顾:Deep Learning 是NN的延伸,NN很多很多层的时候,要怎么克服一些困难,比如训练的时候需要好的初始值,denoising autoencoder 就是一种做法(non-linear PCA),其和统计里面用来做资料处理的PCA 有一定的关联性 …

All Machine Learning

Machine Learning Techniques Lecture 13: Deep Learning

    内容: Deep Learning模型,是之前讲的类神经网路的延伸,他是一个困难的问题,要经过很多层层层淬炼;然后讲了autoencoder,在deep learning里面它的作用就是帮我们预训练出好的weight,本质上做的事情是从资料里面找出最好的表现方式,做法是用一个浅浅的NN来找到一个好的表现方式;进一步讲到denoising autoencoder 就是在原来的资料里面埋了一些杂讯进去做学习已达到可以抗杂讯的autoencoder的效果;最后讲到这些非线性的autoencoder如果退回来变成线性的话,其实就是PCA方法,作用都是帮助我们降低资料的维度。         回顾:NN模型里面有一层一层的神经元,他们的作用就是帮我们萃取出资料面的模式(特征),通过backprop工具来计算梯度,从而通过GD/SGD法来学习的到NN模型里面的w参数。     这一讲:Deep Learning         类神经网络的核心就是一层一层的神经元和他们之间的连接关系。那么问题是我们要用多少个神经元呢?我们要用多少层呢?我们的NN结构是怎么样的呢?或者你可以主动的去设计;或者你可以把模型的结构当作是参数,通过validation来选择最好的。 …

All Machine Learning

Machine Learning Techniques Lecture 12: Neural Network

    内容: Neural Network模型,出发点是把原来的perceptron变成更多层来达到越来越复杂,越来越powerful的效果,这样的链接在生物学上模仿的就是神经元的连结。在NN里面一个网络w固定了的话就是一个hypothesis,每一层做的事情就是根据这些权重来萃取pattern,一层一层萃取出来到最后一层是直接输出。NN学到这些权重的基本方法就是gradient descent(GD),透过backprop的方去很快的算这些梯度到底是多少。最后讲到这样的基本模型还需要小心的是怎么去初始化,用什么regularizer,以及透过early stopping的机制来避免overfit。         上一讲: Gradient Boosted Decision Tree 模型透过 functional gradient 的方式去得到一棵棵不一样的树,然后再给每一棵树以 steepest descent …