Blogs

Will procedural generation still exist in the age of AGI? | AI时代程序化生成还会存在吗?
+
maajor No comment
13 5月

Will procedural generation still exist in the age of AGI? | AI时代程序化生成还会存在吗?

1. 背景 ChatGPT, MidJourney, StableDiffusion已经证明了它们具有强大的AGI能力,但它仍然存在着局限。 ChatGPT深陷数据隐私的问题,三星不允许员工使用便是一例。但更深层次的,围栏是人类的本性,有人的地方就有圈子,在垂直细分领域,将大模型专精化...
Read More
Neural Network Lightmap | 神经网络光照贴图
+
maajor 3 Comments
26 2月

Neural Network Lightmap | 神经网络光照贴图

live demo: Neural Network Lightmap (ma-yidong.com) 问题与猜想 众所周知,Lightmap是一种古老的预计算光照模拟GI方法,可以将间接漫反射信息烘焙到场景物体的UV上,在运行时通过一次UV采样即可获取漫反射GI信息。这种技...
Read More
2022 | 年终
+
maajor No comment
31 12月

2022 | 年终

今年没写几篇博客,在图形技术方面的长进也不大。但今年感觉自己写代码开始入门了,以前可能都不算会写代码。 今年也是这么多年来写代码最多的一年,Github为证,今年提了3.6k commit,平均一天10个。 今年写的比较多的是Typescript/React,Python和 Unity...
Read More
Crowded Plaza, a game with Bevy/Rust| 拥挤广场:使用Bevy/Rust开发小游戏
+
maajor 2 Comments
26 7月

Crowded Plaza, a game with Bevy/Rust| 拥挤广场:使用Bevy/Rust开发小游戏

为什么是Bevy和Rust? 当然因为Rust有点火,笔者想试试玩玩,学习学习Rust。 目前看上去Rust应用比较多的领域是数据库/区块链/跨端部署应用,也就是传统C++的领域,追求性能和多平台,但是Rust多出现在较新的应用场景,比如区块链就是个典型的例子。 游戏引擎主要还都是C...
Read More
The Girl With a Voxel Earring,Behind the Scene | 幕后
+
maajor No comment
24 4月

The Girl With a Voxel Earring,Behind the Scene | 幕后

背景是公司内部的一个比赛:Taichi 99 行代码体素挑战。使用代码创建体素艺术。笔者提交的作品获得了头名,比较有意思,因此讲讲这个作品。 代码在此: maajor/maajor-voxel-challenge (github.com) 比赛的限制条件是:128x128x12...
Read More
HtoTi | Taichi Houdini物理模拟实验
+
maajor No comment
1 10月

HtoTi | Taichi Houdini物理模拟实验

首先祝大家国庆快乐! 笔者加入太极图形正好三个月了,工作的事情先按下不表。最近一个有意思的项目是 Taichi Houdini 。整个项目是Eydcao (Yadi Cao) 在实习期间单枪匹马搞出来的。 这个项目完成的工作是让Houdini用户使用taichi做模拟。具体使...
Read More
Headless Substance | 无头Substance材质生成
+
maajor No comment
31 3月

Headless Substance | 无头Substance材质生成

Headless主要讲的是无人工无GUI参与的软件,中文翻译成无头总感觉怪怪的,暂且这样吧。 Substance套件作为当下游戏美术资产制作中,贴图制作这一环节的主流工具是相当成功的。其优点 其一是方便美术在3D视角下绘制贴图,其二是可以利用程序纹理加快贴图制作效率。 ...
Read More
Game Art Trick – Light Field and Imposter | 游戏美术技巧 – 光场与公告板
+
maajor No comment
27 12月

Game Art Trick – Light Field and Imposter | 游戏美术技巧 – 光场与公告板

鸽了两个月回归。 笔者了解基于图像的方法时,初听感觉没有什么特别,但细细想来忽然感觉其实以前遇到的不少美术技巧都是和这个原理相关的。当时不知道这些技巧如何被人想到,如今才发现与图形学有其相通之处。因此这里整理成文。毕竟理论水平还要学习一个,大概只能给读者一个定性的认识了。 图形学中有两...
Read More
Rig a Hand | 绑定一只手
+
maajor 1 Comment
20 9月

Rig a Hand | 绑定一只手

怎么绑定一个手?也并不是那么简单,这里笔者简单记录下自己在Maya中的实验的关键步骤和注意,以及整理了一些学术论文。 1. Topology | 模型 作为游戏内模型,首先要考虑的是面数。如何在低面数的条件下,保证变形效果?这就需要巧妙的布线。一般原则是: 对会扭转和弯曲的关节处...
Read More
Economize Your Texture | 如何节约贴图
+
maajor 4 Comments
25 8月

Economize Your Texture | 如何节约贴图

做游戏时,我们的硬件资源不是无限的,而其中内存(显存)又是很容易紧缺的一个环节,而其中贴图又占了大头。如何节约贴图?是我们做资源管理时不可忽视的问题。 本文做一个个人的总结,主要在美术/TA制作的实践方面,也会简单扩展到压缩算法。而这些不同的方法,归根结底其思想也是共通的,甚至与别的领域,如...
Read More
Realtime Physical Based Rendering, a Personal Outline | 实时基于物理的渲染-个人的大纲
+
maajor No comment
9 8月

Realtime Physical Based Rendering, a Personal Outline | 实时基于物理的渲染-个人的大纲

什么是Physical Based Rendering? PBR到底包含什么? 一般离线渲染中PBR包含内容很多,从材质到灯光到曝光等。但是,在很多游戏PBR教程中从microfacet model,BRDF, 材质属性,辐照度开始讲,有时候也只讲材质。个人感觉对于新手来说很容易一下就掉入...
Read More
Build a Blender Geometry CI Pipeline |搭建一个Blender模型CI(持续集成)框架
+
maajor No comment
11 7月

Build a Blender Geometry CI Pipeline |搭建一个Blender模型CI(持续集成)框架

这里想验证的一个想法是,能否做美术资源的持续集成(CI)。 当然业界是有这样实践的,这里想自己搭遍框架。 涉及到版本发布的业务,比如app开发,引擎开发,应用开发等等,一般都会做CI,方便快速迭代。游戏影视行业亦有如此的需求。最常见的是游戏打包了。 不过,作为游戏TA/TD,我们更关心...
Read More
Data-Driven IK in Character| 角色中的数据驱动反向动力学
+
maajor No comment
24 5月

Data-Driven IK in Character| 角色中的数据驱动反向动力学

读论文写代码有感,当我们从隐空间的角度看待动画,很多动画的机器学习算法的原理就比较好理解。以及IK,传统的方法可以看成是机器学习方法的近似和简化。 因此笔者试做了一个Data-driven IK的Demo Github地址:latent-pose Blender中使用 动作...
Read More
BxDF Truth to Realtime with Mitsuba. A case study of Fur BSSRDF | BxDF从真实到实时,以毛发为例
+
maajor 3 Comments
9 5月

BxDF Truth to Realtime with Mitsuba. A case study of Fur BSSRDF | BxDF从真实到实时,以毛发为例

在写GAMES101大作业时,在Mitsuba里实现BxDF, 遇到的很大一个问题是, 怎么知道渲染结果是'物理正确'的? 我们凭什么相信渲染器或者游戏引擎的渲染结果,是“物理正确”的?如果不是物理正确的,限于模型和计算性能的限制,什么损失了? 要回答这个问题很不容易,不是所有引擎...
Read More
A Differentiable Chair | 一把可微分椅子
+
maajor No comment
12 4月

A Differentiable Chair | 一把可微分椅子

最近做的一个实验,用一个椅子模型去匹配图片。 主要受到CMR这篇论文的启发,MPI之前的一系列文章,比如SMPlify。用到了最近比较热门的可微分渲染器,比如Neural Mesh Renderer。 最后能生成一个模型和一张贴图,贴上贴图在Blender里预览一下 ...
Read More
[Translate&Review]Intelligent Setups for Automating Character FX | [译评] 自动化角色FX配置
+
maajor No comment
8 3月

[Translate&Review]Intelligent Setups for Automating Character FX | [译评] 自动化角色FX配置

这篇主要讲的是影视中Character FX的自动化pipeline的,笔者觉得很有启发,因此翻译并做一讨论。 讲者Adam Katz是Animal Logics的Lead Character FX Artist,这个talk主要讲的是Character Fx,具体里来说主要是布料和毛发模拟...
Read More
微信公众号同步
+
maajor No comment
14 2月

微信公众号同步

欢迎关注公众号:码工图形 大家好,本网站受限于VPS内存容量(1GB),在大规模访问时经常出现MySQL服务挂掉的情况,不堪重负。 笔者已将最近两年来大部分原创文章备份到微信公众号:码工图形 一来分流,二来方便某些公众号转载 以后文章也将会同步到微信公众号,欢迎关注,望周知...
Read More
Interacting with Houdini Engine in Python | 使用Python与Houdini Engine交互
+
maajor 1 Comment
27 1月

Interacting with Houdini Engine in Python | 使用Python与Houdini Engine交互

Houdini Engine是Houdini的一个无图形界面简化版,可以通过houdini engine与houdini内核交互,完成houdini fx中的操作。官方有For Maya, For Max, For Unity, For Unreal四个插件,可以在这四个host程序中调用hou...
Read More
[Translate]Character Rigging God Of War | [译]战神4角色绑定
+
maajor 1 Comment
9 12月

[Translate]Character Rigging God Of War | [译]战神4角色绑定

本文译自Youtube视频 Character Rigging & Cinematic Animation in God of War with Erica Pinto & Axel Grossman ,这里节选了后一部分,Axel讲的绑定部分。主要讲了本作中奎爷的一些绑定做法以及...
Read More
Houdini Rigging for Game, A Brief Research | Houdini游戏绑定,入门踩坑
+
maajor No comment
1 12月

Houdini Rigging for Game, A Brief Research | Houdini游戏绑定,入门踩坑

1 Why? 可行吗? 当然是很少见的。笔者所见大部分游戏公司都是Max,少部分是Maya或者Motionbuilder。虽然常见吐槽Max Biped不再维护了。然而不可否认这套系统用起来还挺方便的,而且对于大部分国内动画师,Max是入行培训学习的,也足够满足大部分手游的需求了。Maya...
Read More
[Translate]Reverse Engineering the rendering of The Witcher 3 III | [译]巫师3渲染逆向工程 3
+
maajor No comment
8 11月

[Translate]Reverse Engineering the rendering of The Witcher 3 III | [译]巫师3渲染逆向工程 3

原文参见 Reverse engineering the rendering of The Witcher 3: Index 这是第二篇,翻译原文13-15节。由于文章太长,而且废话较多,这里先做个简单的摘要吧 摘要 13介绍巫师嗅觉的效果实现,其中, 13.a...
Read More
[Translate]Reverse Engineering the rendering of The Witcher 3 II | [译]巫师3渲染逆向工程 2
+
maajor No comment
8 11月

[Translate]Reverse Engineering the rendering of The Witcher 3 II | [译]巫师3渲染逆向工程 2

原文参见 Reverse engineering the rendering of The Witcher 3: Index 这是第二篇,翻译原文9-12节。由于文章太长,而且废话较多,这里先做个简单的摘要吧 摘要 9-中介绍GBuffer的组成,讲了一些特殊的操作,...
Read More
[Translate]Reverse Engineering the rendering of The Witcher 3 I | [译]巫师3渲染逆向工程 1
+
maajor 6 Comments
12 8月

[Translate]Reverse Engineering the rendering of The Witcher 3 I | [译]巫师3渲染逆向工程 1

原文参见 Reverse engineering the rendering of The Witcher 3: Index。作者目测就是波兰人。这个系列总共15篇,作者发布跨度接近两年。其实介绍的算法并不复杂,前几篇甚至感觉很基础。但是方法非常新奇。经典的逆向工程文章大多是截几个图,描述一下做法...
Read More
On 3D Mesh Deformation, FFD to RBF | 模型变形从FFD到RBF
+
maajor 5 Comments
7 8月

On 3D Mesh Deformation, FFD to RBF | 模型变形从FFD到RBF

1. 模型变形的方法 在游戏开发中有多种常用技术可以使得一个模型(mesh)变形。比如Blendshape/Morphtarget,可以运行时对顶点插值得到中间状态的模型。比如Linear Blend Skinning,也就是最常见的骨骼蒙皮方法,可以让角色模型变形显示动画。这些技术的...
Read More
On Mesh Cloud Rendering – Reimplement Sea of Thieves’ cloud | 模型云渲染-重现盗贼之海的云
+
maajor 4 Comments
30 6月

On Mesh Cloud Rendering – Reimplement Sea of Thieves’ cloud | 模型云渲染-重现盗贼之海的云

Sea of Thieves, Tech Art and Shader Development中提到了他们的云的渲染方法,非常的trick和cheap,对云的渲染模型做了相当大的简化,然后却还有不错的效果。笔者这里尝试重现Sea of Thieves中云的做法。原作在视频中给出了很多细节原理,笔...
Read More
A Short History of Parallax Occlusion Mapping/Relief Mapping | 视差贴图,一个简短的历史
+
maajor No comment
22 6月

A Short History of Parallax Occlusion Mapping/Relief Mapping | 视差贴图,一个简短的历史

上图:左-法线贴图,右-视差贴图 我们常用法线贴图模拟表面的细节凹凸,不过法线贴图的一个问题是在视角很低(Gazing Angle)时会出现失真。 主要原因是法线贴图不会考虑高度的遮挡关系,因此有一些被遮挡的面会被渲染出来。解决这一问题的方法主要有两种: Tessellat...
Read More
Blocking Out City With Houdini PDG | 使用Houdini PDG生成城市白模
+
maajor 4 Comments
16 6月

Blocking Out City With Houdini PDG | 使用Houdini PDG生成城市白模

Houdini PDG是17.5版本新增的一个任务管理模式,方便最终结果的分步生成。笔者当前使用的17.5.258版本,鉴于这个功能刚刚出现,目前似乎是还有些bug,其后的版本可能会修复的。 到目前为止(~2019.6,确实没看到什么houdini engine + pdg的教程,只有...
Read More
[Translate] GDC19 – Procedurally Crafting Manhattan for ‘Marvel’s Spider-Man’ | [译]漫威蜘蛛侠中程序化创建曼哈顿
+
maajor No comment
13 5月

[Translate] GDC19 – Procedurally Crafting Manhattan for ‘Marvel’s Spider-Man’ | [译]漫威蜘蛛侠中程序化创建曼哈顿

原文为GDC2019中,Insomniac Studio的Principle Technical Artist - David Santiago带来的Talk-Procedurally Crafting Manhattan for 'Marvel's Spider-Man'. David Santi...
Read More
Hair Rendering and Modelling – An Intro | 头发渲染与建模 – 简介
+
maajor No comment
31 3月

Hair Rendering and Modelling – An Intro | 头发渲染与建模 – 简介

这篇中回顾了头发渲染模型的历史和一些实现细节,尝试使用Ornatrix建模头发,并在Unity中重现了UE中的Marschner模型,添加了eccentric参数。 1 渲染   1.1 Kajiya-Kay     最早研究毛发渲染的便是Kajiya和Kay,他们在1989年提出了Kajiya-K...
Read More
Skin Decomposition | 蒙皮分解
+
maajor 6 Comments
14 2月

Skin Decomposition | 蒙皮分解

想解决的问题是:已知一连串顶点运动的动画,能不能用骨骼动画把它表示出来? 比如,一个动补的脸部动画?一个离线模拟的布料?   以下是笔者测试的一个结果,UE4中渲染,连衣裙用了接近200根骨骼。可以看到有些帧跳了,应该是动画压缩的问题。 1. Intro 一个直觉的想法是,这不就是降维嘛...
Read More
Neural Network Post Processing v1.0 Released ! | NNPP v1.0发布了!
+
maajor No comment
23 1月

Neural Network Post Processing v1.0 Released ! | NNPP v1.0发布了!

前文提到的Unity中神经网络后处理插件终于过审发布了! AssetStore页面:Neural Network Post Processing Github源码(不包含预训练模型):Neural Network Post Processing   一些截图...
Read More
Dabble FrankenGAN with Houdini | Houdini中测试FrankenGAN
+
maajor No comment
18 1月

Dabble FrankenGAN with Houdini | Houdini中测试FrankenGAN

本文尝试在Houdini中测试和实现FrankenGan的(部分)功能 1. FrankenGAN 首先介绍一下这篇文章 FrankenGAN: Guided Detail Synthesis for Building Mass-Models Using Style-Synchonized GANs...
Read More
Tensorflow/Pytorch in Houdini | Houdini中使用Tensorflow/Pytorch
+
maajor 1 Comment
16 1月

Tensorflow/Pytorch in Houdini | Houdini中使用Tensorflow/Pytorch

(首先假定读者有基本的Linux/Houdini/Python操作经验) Houdini作为最好的程序化建模软件,又正好深度学习框架大部分在Python中,那么进行一些建模/图形的深度学习任务时,怎么能少得了在Houdini?然而有几乎没有文章讲如何在Houdini中使用Tensorflow或...
Read More
Post Processing with Fast Neural Style Transfer in Unity | Unity中快速神经风格迁移后处理
+
maajor 1 Comment
17 12月

Post Processing with Fast Neural Style Transfer in Unity | Unity中快速神经风格迁移后处理

1 NNPP with FNST 快速神经风格迁移后处理  承接上文用GAN训练后处理,其实那篇也算是一种风格迁移吧,只不过风格损失函数在NST中定义为最大均值差,在GAN中定义为一个熵,用discriminator表示。 2 Fast Neural Style Transfer 基本上是基于P...
Read More
Train post-processing with GAN | 使用生成对抗网络训练后处理
+
maajor 1 Comment
6 12月

Train post-processing with GAN | 使用生成对抗网络训练后处理

1 Post-Processing To Image to Image Translation 后处理到图片翻译   这次想做的是如何用神经网络来后处理。后处理是游戏中常见的一种图像效果,核心任务也就是把原始图片通过一些图片处理的手段,转化成另一种更好看的效果,常见的比如Bloom, LUT等等。而...
Read More
Unity ECS, Swarm Animation and Markov Chain| ECS集群动画与马尔可夫链
+
maajor 2 Comments
24 11月

Unity ECS, Swarm Animation and Markov Chain| ECS集群动画与马尔可夫链

  交通模拟的项目,要添加大量的行人,自然想到的肯定要用Animation Instancing。其主要思路是把骨骼动画烘焙成贴图,skinning状态是per instance的,在vertex shader中读取animation texture做skinning运算。笔者这里有几点不同。 ...
Read More
Construct BVH with Unity Job System | 用Unity JobSystem构造BVH
+
maajor 6 Comments
10 11月

Construct BVH with Unity Job System | 用Unity JobSystem构造BVH

BVH 是一种空间存储数据结构,便于空间查询。类似的空间查找方法还有BSP,Octree等等。 BVH的构造/查询比较快,空间冗余也比较少,在实时图形学领域用的比较广泛。比如NVidia的RTX技术,就是硬件固定管线实现了BVH便于RayTracing加速。   构造BVH或其它空间查询结构对于渲...
Read More
Unity ECS and Traffic Simulation | UnityECS架构与交通模拟
+
maajor No comment
4 11月

Unity ECS and Traffic Simulation | UnityECS架构与交通模拟

尝试做交通和行人的模拟,自然就想到了Unity2018的新功能ECS+Job System,线性数据+多线程提高模拟速度,因此本文分两部分:ECS和交通模拟 以下为一个WIP的成果 该项目的实现主要有几个模块:生成RoadGraph,构造BVH,车辆模拟,行人模拟。 RoadGraph部分,为...
Read More
Procedural Building, A Prefabricated Way | 程序式建筑生成-预制方法
+
maajor 4 Comments
21 10月

Procedural Building, A Prefabricated Way | 程序式建筑生成-预制方法

虚拟环境中程序式生成建筑的建模逻辑应当在一定程度上参考现实世界中建筑的建构逻辑。虚拟环境的建模固然比现实世界轻松很多。一堵混凝土墙,虚拟环境中建一个低模分UV然后程序式生成贴图就可以了,现实世界中还要支模打钢筋灌浆。比如建造一座雅典城,可能需要几万人几十年的时间,而刺客系列可以一千人两年铺完。诚然如...
Read More
Making of a alien base with L-System | 使用L-system建模外星基地
+
maajor 1 Comment
26 9月

Making of a alien base with L-System | 使用L-system建模外星基地

更多美术向的图片请戳这里,本文主要是相关的技术分享   Procedural建模中有一套比较特殊的基于规则的方法,一般都是衍生自L-system。最早是匈牙利植物学家lindenmayer提出的,L-system也就是Lindenmayer-System的简称。自然界的植被(Speedtree),建...
Read More
Real-Time Renderting 4rd Reading Notes Chap3-8 | RTR4阅读笔记 3-8章
+
maajor No comment
14 9月

Real-Time Renderting 4rd Reading Notes Chap3-8 | RTR4阅读笔记 3-8章

基础的就不细说了,这里主要记一些重要的点 第三章 3.1 并行架构 GPU是高吞吐的,定义为数据处理的最大速率,也是低缓冲的,没有缓存和控制逻辑。采样贴图因为资源不在缓冲,可能很慢,要几百个时钟,这期间gpu会切换到处理另一个fragment,切换是很快的。以此处理了很多fragment,...
Read More
Splat with 256 Texture – Review on MegaSplat | 256套贴图混合地形-MegaSplat回顾
+
maajor 2 Comments
3 9月

Splat with 256 Texture – Review on MegaSplat | 256套贴图混合地形-MegaSplat回顾

最近看到MegaSplat这个插件感觉很有意思,在这里做一介绍。作者Jason Booth是有二十多年经验的程序员,现在是Disruptor Beam工作室的客户端和图形架构师,最近unity官方博客还推了行尸走肉:行军作战移动端优化经验,便是这位大神所写 MegaSplat是一套地形的shader...
Read More
Procedural Parcel Modelling In Houdini | Houdini中程序式生成街区地块
+
maajor 3 Comments
29 8月

Procedural Parcel Modelling In Houdini | Houdini中程序式生成街区地块

上图是周边式的街区地块随便拉的盒子,redshift的水印还在。。。   上文讲到了如何程序式生成街道,那么下一步就是将街区划分为地块。实际中的街区形态多种多样,又以三种最为典型。一种是地块平铺在街区中,自发形成内部道路,姑且称为平铺式。另一种是地块面向街区外侧,成环状,姑且成为周边式。第三种,整个...
Read More
Real-Time Rendering 4rd Chapter 14 Reading Note | RTR4第14章笔记-体积与半透明渲染
+
maajor No comment
19 8月

Real-Time Rendering 4rd Chapter 14 Reading Note | RTR4第14章笔记-体积与半透明渲染

Real-Time Rendering出第四版了,新增了不少内容,这里做一些笔记,一章一章来。   有一些介质,比如水 雾等,分子比较稀疏,和光作用时效果不同于普通BRDF,会有散射(scattering)。另一些较致密的物质也有散射。其实普通的diffuse颜色也会有散射,只不过作用尺度很小,比如...
Read More
Procedural Street Modelling In Houdini 1 | Houdini中程序式街道生成 I
+
maajor 6 Comments
17 8月

Procedural Street Modelling In Houdini 1 | Houdini中程序式街道生成 I

  路网的程序式生成前人曾经提出过多种方式,比如用模板,用L-System,用代理(Agent-Based),用张量场(Tensor Field)。其中比较实用的是L系统和张量场,前者也就是CityEngine中使用的方式。[Parish and Muller, 2001]这里的L系统不是传统的字符...
Read More
[Translate] Technical Artist Bootcamp GDC2012 | [译] TA训练营GDC2012
+
maajor No comment
3 8月

[Translate] Technical Artist Bootcamp GDC2012 | [译] TA训练营GDC2012

前记 GDC2012的TA训练营中几位大佬没讲太多技术方面的事情,更多的是方法论,这几天读完感觉深有体会,一些要点完全可以用在工作中,特此把一些关键性的语段翻译下来。 Introduction- Adam Pletcher Many of you might be wondering “how...
Read More
Vertex Shader Animation Revisit | 顶点动画再议
+
maajor No comment
15 7月

Vertex Shader Animation Revisit | 顶点动画再议

1. 概述 mesh的顶点可定义属性,比较常见的自定义通道是顶点色color和uv3 uv4及以上,因为一般uv1是贴图坐标,uv2是lightmap坐标,所以不太考虑这俩。那就这些我们就已经有 3 * 4 = 12个通道了。这里面可以存的数据一般包括: 运动强度 1个频率1个通道就...
Read More
[Translate&Review] Creating Photorealistic Procedural Materials in Substance Designer | [译&评]SD中创建写实材质
+
maajor 3 Comments
9 6月

[Translate&Review] Creating Photorealistic Procedural Materials in Substance Designer | [译&评]SD中创建写实材质

Daniel Thiger在GDC2018 Substance Day分享了他用SD制作材质的一些经验,youtube上有分享。 大佬现在在Bungie担任Lead Environment Artist,之前在EA Dice担任Senior Environment Artist/Senior ...
Read More
Terrain Cliff Problem | 地形峭壁问题
+
maajor 7 Comments
12 5月

Terrain Cliff Problem | 地形峭壁问题

传统高度图地形的制作方式不可避免会遇到峭壁拉伸严重的问题,另一方面峭壁要有分层的感觉。常见的解决方法主要有两种:一种是贴面,用石头的模型摆成悬崖,但是人力成本太高;另一种是用triplanar的uv,但是贴图采样次数过多。 一些新的程序化的方式包括:stochastic triplanar(F...
Read More
Some Shader Optimization Tricks | 一些Shader优化技巧
+
maajor No comment
9 5月

Some Shader Optimization Tricks | 一些Shader优化技巧

1 精度问题 精度越低的数值类型意味着更低的寄存器数量,更快的计算,以及更低的能耗。 能耗:half < float < short < int. 注意,最大的是int! 不过需要注意的是half的取值范围,IEEE754规定binary16类型用1个符号位,5个指数位,10个有效...
Read More
[Translate] Procedural Islands of ‘Dauntless’ | [译] “无畏”中的程序化生成岛屿
+
maajor 2 Comments
14 4月

[Translate] Procedural Islands of ‘Dauntless’ | [译] “无畏”中的程序化生成岛屿

来自GDC2018的一个Talk:Technical Artist Bootcamp Procedural Islands of 'Dauntless' 主讲者两位, Michael Trottier,之前在Bioware做Artist和TA; Mykola Konyk,之前在Side Eff...
Read More
[Translate] Procedural World Generation of ‘Far Cry 5’ | [译]孤岛惊魂5中的程序化场景生成
+
maajor 2 Comments
14 4月

[Translate] Procedural World Generation of ‘Far Cry 5’ | [译]孤岛惊魂5中的程序化场景生成

来自GDC2018的Talk:Procedural World Generation of 'Far Cry 5' 主讲者 Etienne Carrier,法国人,Ubisoft Montreal的TA,之前在Frima Studio担任TA. 主要展示的是FarCry引擎DUNIA2中...
Read More
Memo of some HScript and VEX Variables| 一些HSript Expression和VEX变量备忘整理
+
maajor No comment
24 3月

Memo of some HScript and VEX Variables| 一些HSript Expression和VEX变量备忘整理

Houdini中代码主要有三种语言:Python,HSript,VEX。HScript有点像MEL,Maya里的老祖宗语言;Python是最近支持的,可能有点像PyMel这种。这三种语言的复杂关系可以看这个科普帖子 Python和HScript都可以写Expression的,笔者见到的还是用HSri...
Read More
Memo of Analysing Game Rendering 2 | 分析游戏渲染的姿势备忘之二
+
maajor 3 Comments
4 3月

Memo of Analysing Game Rendering 2 | 分析游戏渲染的姿势备忘之二

上回文说到的主要是手游,这次说说别的。在PC平台上,IntelGPA的缺点是: 只能用核显,性能比较差 只支持DX VertexBuffer抓不全,导出模型比较难 PC上另一个重要工具就是NSight了,NVidia自家出的显卡debugger。不仅能用于CUDA科学计算的debug...
Read More
Some Methods to Occlusion Culling | 遮挡剔除的几种方式
+
maajor No comment
21 2月

Some Methods to Occlusion Culling | 遮挡剔除的几种方式

目前主流的OC有这几种方式:预计算的原始的PVS,主要CPU端的umbra的dPVS。和主要GPU端的GPU-Driven。像RealTimeRendering书中中提到的Hierarchical Z-Buffering和HOM,大多比较底层,集成在其它实现方案里,比如dPVS用了HOM的技术。另外...
Read More
Memo of Analysing Game Rendering 1 | 分析游戏渲染的姿势备忘之一
+
maajor 1 Comment
20 2月

Memo of Analysing Game Rendering 1 | 分析游戏渲染的姿势备忘之一

目前(2018)手机的GPU基本只有三家了:Mali, Qualcomm Snapdragon, PoverVR. 其中Mali主要是华为在用,Snapdragon是其它大部分的安卓机在用,比如小米/三星/OV/一加. PowerVR是苹果专用的,集成在果家的A系列CPU里了。这之中,ios的Xco...
Read More
Mesh Vertex Animation In Unity | Unity中顶点动画
+
maajor 2 Comments
24 12月

Mesh Vertex Animation In Unity | Unity中顶点动画

最后的效果,左为顶点shader,右为蒙皮 10根骨骼 有些远景动画、小动画,用骨骼蒙皮来做太费了。一个好的办法是用顶点动画。比如在顽皮狗GDC的分享Technical Art Techniques of Naughty Dog:Vertex Shaders and Beyond用这种方法模拟...
Read More
[Translate] Foliage Optimization in Unity | [译] Unity中植被渲染优化
+
maajor No comment
13 12月

[Translate] Foliage Optimization in Unity | [译] Unity中植被渲染优化

原文在此,下为译文 在我上篇博客——创建森林的美术建议中,我指出了创建3D森林的一些要点。那里我主要强调的是美术建议,资源应该有什么、如何布置。森林一个重要的事情是密度,随之而来的问题是性能优化。 问题 有很多方式优化树林,但如何来创建资源,通用的不多。然而,有一件事是通用...
Read More
Houdini Terrain 2 | Houdini地形生成之二
+
maajor 2 Comments
3 12月

Houdini Terrain 2 | Houdini地形生成之二

之前一篇Houdini地形生成尝试在Houdini 15.5中生成地形。没想到Houdini 16的版本就出了地形的功能。在SOP里,菜单叫HeightField。其实原理看上去是一个二维体素,heightfield wrangler其实跟volume wrangler一样一样的。 其实之前15.5...
Read More
Realtime Grass Rendering on Mobile Platform| 移动端实时草地渲染
+
maajor No comment
15 10月

Realtime Grass Rendering on Mobile Platform| 移动端实时草地渲染

有很多很多不同的技术了。 题图是一个人的demo,Real-Time Grass Rendering,跟我没啥关系 要渲草的话,OpenGL ES2.0/DX9及以下就不用考虑了。至少要支持GPU Instancing,有Compute Shader更好。 理想平台:OpenGL ES3.1/Met...
Read More
Mixed Lighting Lightmap & Shader in Unity | Unity中混合光照Lightmap研究
+
maajor No comment
2 9月

Mixed Lighting Lightmap & Shader in Unity | Unity中混合光照Lightmap研究

Unity中有三种灯光模式:Realtime Lighting, Mixed Lighting, Baked Lighting. 第一种是实时计算的,第二种是实时与烘焙混合的,第三种所有灯光都是烘焙的。 在Mixed Lighting中处理Lightmap的同时还要考虑实时灯光,Shader上会复杂...
Read More
Maya Python Workflow | Maya Python工作流程
+
maajor 1 Comment
31 8月

Maya Python Workflow | Maya Python工作流程

半年没有更新了,我一切都好。这半年经历的事情很多:参加CAADRIA、拒掉留学Offer、做完毕设研究生毕业、搬到杭州、加入猪厂。一个新阶段的开始。 这一篇主要总结一下使用Python开发Maya插件的准备工作和基本工作流程。 1. 环境部署 开发之前需要进行一些准备工作。 1. dev...
Read More
Some Random Thoughts on Marlin | Marlin随想
+
maajor No comment
18 2月

Some Random Thoughts on Marlin | Marlin随想

为了毕设做打印机研究3D打印机啊。 1 Marlin Marlin是一种3D打印机的固件(Firmware)。所谓固件,就是刷进开发板(或者单片机,比如Arduino)的程序。我们用Arduino的时候,上传的程序就是固件。3D打印机有很多类型的,比如Makerbot,Ultimaker,ZCo...
Read More
PyQt+QtDesigner App Dev Workflow | PyQt + QtDesigner 小程序制作流程
+
maajor 3 Comments
17 2月

PyQt+QtDesigner App Dev Workflow | PyQt + QtDesigner 小程序制作流程

0. 起因 毕设要做一个发送GCode的小程序,需要GUI。所以接触了一下PyQt. 1. 安装 需要Qt,在Qt官网下载即可。想下载的话要回答一些问题,我选的in-house deployment,接受LGPL v3之类。然后选择一个完整版的Qt,800Mb左右。 Python...
Read More
Houdini Terrain | Houdini 地形生成
+
maajor 2 Comments
25 1月

Houdini Terrain | Houdini 地形生成

讲道理呢,World Machine的地形用Houdini都是可以做出来的。不过还是有些局限,尝试了一下。 1. 噪声地形 主要就是两类:Voronoi 和 Perlin Voronoi Voronoi很简单,VOP里面直接就有Voronoi Noise 出来和World Ma...
Read More
Special Particle Effects in Houdini Vex | 一些特殊粒子系统 in Houdini VEX
+
maajor No comment
25 1月

Special Particle Effects in Houdini Vex | 一些特殊粒子系统 in Houdini VEX

感受了一下Houdini VEX,语法比较像C。但如果要说相似度的话,我觉得它更像Shading Language比如GLSL。可以逐个操作Point, Vertex, Primitive。像极了GLSL的Vertex Shader/Fragment Shader。区别在于Point Vertex ...
Read More
Introduction to Cracking .Net Assembly | 一些.NET程序集的破解初探
+
maajor No comment
24 12月

Introduction to Cracking .Net Assembly | 一些.NET程序集的破解初探

0. 起因 当然就是要破解Grasshopper插件。但是其实起源于笔者破解另一个C#程序。 1. .NET .NET是微软开发的一套技术平台,在其上可以方便快捷地搭建各种应用。.NET应用是基于.NET Framework的,后者是一个类库,一个程序的基础框架,包含很多系统和常用的API。....
Read More
Some Notes on Physical Based Shading | 有关基于物理着色的资料
+
maajor No comment
2 12月

Some Notes on Physical Based Shading | 有关基于物理着色的资料

弱渣从头开始学图形学,大作业基本功能都做完了准备搞事情,想写个基于物理的着色器。只好从头开始学习BRDF。 PBS这套流程最近几年非常流行,主要是为了帮助美术减少材质的错误的。我就是主要读了几篇论文,看了看别人的代码。 Torrance-Sparrow 看的很多PRS的文献都会提到Torr...
Read More
Flowmap in OpenGL | OpenGL中Flowmap水面
+
maajor No comment
4 11月

Flowmap in OpenGL | OpenGL中Flowmap水面

笔试的时候有这么一道题,讲模拟水面,用FlowMap。当时没有太懂,就随便回答的,正好这次图形学大作业有机会来实现一下。 FlowMap是用来解决水面流动方向单一问题的方法,SIGGRAPH2010上有篇文章讲的V社做Portal2时使用Flowmap的方法,见此。V社官网上也有一篇文章讲水面内容...
Read More
Physarealm
+
maajor 2 Comments
13 9月

Physarealm

This is a Plugin For Rhinoceros Grasshopper. Personal Research based on digital fabrication studio. Collaborator: Zhang Yuxiang. Role: Programmer ...
Read More
Issuu Portfolio Crawler
+
maajor No comment
13 9月

Issuu Portfolio Crawler

A Python web crawler Personal Research Time: 2016.9 Architecture student usually upload their portfolios to Issuu.com, which I often visited to f...
Read More
[Translation] Assassin’s Creed Unity: London is not built in one day | [译]刺客信条枭雄:伦敦不是一天建成的
+
maajor 2 Comments
5 9月

[Translation] Assassin’s Creed Unity: London is not built in one day | [译]刺客信条枭雄:伦敦不是一天建成的

上周虚拟主机运营商更换服务器,DNS解析挂掉了,网站就一直不能访问了。昨天把DNS解析搞到DNSPod,现在目测是局地能访问,笔者正挂着VPN写博客。 [su_spacer size="70"] 今天整理的是GDC2016的一个Presentation,题目是“Assassin's Cr...
Read More
[Translation]Model Cities in Independent Day 2 | [译]独立日2中的城市创建
+
maajor No comment
18 8月

[Translation]Model Cities in Independent Day 2 | [译]独立日2中的城市创建

主要是两个视频讲座:Model Cities with the Tech Behind Independence Day: Resurgence和Independence Day Resurgence – CityEngine Workflow with Matthias Buehler,这两个视频...
Read More
Transfer Lightmaps in Unity | Unity中转移光照贴图
+
maajor No comment
17 8月

Transfer Lightmaps in Unity | Unity中转移光照贴图

unity中光照贴图(lightmapping)的存储方式比较特殊,烘焙好的光照贴图存储在场景中,而参与烘焙的物体本身不记录光照贴图,只记录一组uv数据对应光照贴图。在显示的时候,shader通过这组uv坐标访问物体的光照贴图信息,再显示出来。 并且这些光照贴图没法用手动编辑,只能写脚本编辑。 而...
Read More
Transformation in ShaderLab | ShaderLab中的空间变换
+
maajor No comment
12 8月

Transformation in ShaderLab | ShaderLab中的空间变换

写Shader经常会碰到一堆得空间变换,而又经常想不起来变换矩阵的名字,因此整理一下。 1 物体空间(Object Space), 顶点着色器接收的语义项比如POSITION, NORMAL, TANGENT都是在这个空间下 2 世界空间(World Space) 3 观察空间(View ...
Read More
[Translation]TechArt Culture in Uncharted4 | [译]“神秘海域4”中的技美文化
+
maajor No comment
3 8月

[Translation]TechArt Culture in Uncharted4 | [译]“神秘海域4”中的技美文化

原视频是GDC2016上的演讲Technical Art Culture of 'Uncharted 4' "神秘海域4"(Uncharted 4)是顽皮狗(Naughty Dog)的新作,在今年GDC和SIGGRAPH都有很多展示。 主讲者Andrew Maximov(下称老莫)是顽皮狗的...
Read More
Terrain Making in World Machine | World Machine地形制作
+
maajor No comment
29 7月

Terrain Making in World Machine | World Machine地形制作

研究了一下WorldMachine生成地形 峡谷 丘陵 雪山说起来地形制作也有了一点经验,下面总结总结。 雪山 雪山,来自CryTek有关雪山的资源是比较多的,在ArtStation上就有很多人做过雪山,比如K. Teper的,M. Perchun的,I Shinsoj的. 视...
Read More
[Translation]Basic Theory of Physically-Based Rendering | [译]基于物理渲染的基本理论
+
maajor No comment
28 7月

[Translation]Basic Theory of Physically-Based Rendering | [译]基于物理渲染的基本理论

原文是Jeff Russell所写的Basic Theory of Physically-Based Rendering 广义上的基于物理渲染(PBR)是最近在实时渲染领域激动人心的潮流。这个术语的广泛传播常常让人误解它的准确定义。简短的定义是“很多事”和“看情况”,当然这不令人满意。所以我决...
Read More
Quick Intro to City Engine | City Engine浅谈
+
maajor No comment
15 7月

Quick Intro to City Engine | City Engine浅谈

研究了一下City Engine。这个软件现在归ESRI公司,也就是开发ArcGIS的公司,所以这个软件的定位主要在GIS系统,城市规划等等。 主要原理 City Engine建模的主要原理叫Procedural Modelling,一个计算机图形学术语,大概就是用一些算法和规则来建模。比如分形...
Read More
Quick Intro to World Machine | World Machine初涉
+
maajor No comment
8 7月

Quick Intro to World Machine | World Machine初涉

最近在学习World Machine的作业。油管上有不少教程。 这个软件一般被用来制作游戏中的开放地形。 上图是一个小练习。 这个软件也是节点式的建模软件,非常类似GH,它的电池称为Device。而编辑地形原理又很像ps,只不过操作的不是颜色信息而是一个通道的高度信息。其原理一...
Read More
Getting started with Caffe | Caffe的安装与使用
+
maajor 1 Comment
9 6月

Getting started with Caffe | Caffe的安装与使用

本来第二篇可以写其他内容的,比如前端和Javascript、建筑大数据与可视化、仿生找形,但这篇怎么就写了深度学习了呢,说来话长。这学期选了HCI课,本来以为能学习UX设计,然而并没有学到,相反读了很多论文。期中研究的社交媒体中亲密关系的监控行为。期末大作业本来可以选作VR的,但是被分配了机器学习作...
Read More
view all