Article
未读前言数字时代我们常会和文字,图片,视频打交道。而作为一个cg工作者,你可能时常会有下面的需求:
批量将一堆4k的材质贴图转成2k
将exr序列帧转换成更轻便的jpg进行预览
批量给序列帧更名
把mov视频转换成序列帧
将写好的doc文档转换为pdf格式
合并一堆mov视频
面对这样的需要,我们或许会打开Nuke等DCC软件进行转换输出,或是@公司TD写一个批量工具,但其实对于以上需求,使用命令行工具,输入一行命令即可达到上述的目的。
下面为大家安利和介绍三款命令行工具,它们包含了对文字,图片,音频和视频的处理,有着命令行界的瑞士军刀称号。分别是:
ffmpeg
imagemagick
pandoc
FFmpeg一款处理音频和视频的命令行工具。官网:https://ffmpeg.org/
Windows用户可以直接从官网下载安装包,双击安装即可。Mac用户可以使用brew install ffmpeg进行安装。Linux用户…应该有自己动手安装的能力。
下面说几个常用的命令:
转码这里是将mov格式转码为mp4格式。
1ffmpeg -i input.mov outp ...
Article
未读前言收集了一些Maya使用效率的技巧。大致来源于一些博客,视频教程和平时使用的经验。
1.清理优化场景文件有时候我们拿到一个文件,明明场景里只有一个人物rig动画。但是当我们对它进行调整,或是打开保存文件的时候,会异常的慢。这有可能是场景中存在了很多未被使用的材质或动画曲线等一系列垃圾节点。
这个时候需要用到Maya自带的优化功能进行清理。
可以根据需要进行清理,不过在清理前最好先另存一下文件。
2.让Maya启动快一些关闭不使用的插件。比如对于一个动画师来说,我们不需要用到Maya的特效解算模块。所以可以在Plug-in Manager中把它们给off掉。
流体解算:
毛发解算:
特效模拟:
把它们取消勾选后,基本可以节省10s的开启时间。
还有就是Maya在2016后的版本,会多出一个登录功能。每次启动也会占用时间进行网络验证。(下图可见)
可以通过添加一个环境变量禁止这个功能。设置完后记得注销重新登陆,再次打开Maya就会看到这个登陆框已经消失了。
3.开启远处物体低质渲染比如在进行场景动画制作的时候,一些离摄像机远处的物体,不需要很高的预览质量,开启这个功 ...
Article
未读前言前段时间朋友接了个外包,实拍的原始素材在nuke里进行了变速,而一些cg动画在原素材中已经制作完成,需要一个工具对maya文件中动画进行相同的变速来匹配变速后的素材。
其实变速的原理和实现并不是特别复杂,不过繁复的数值计算需要借助脚本来实现。
然后借着节假日的最后一天,写了这个变速工具。这篇文章简单的记录下过程,并把它分享给需要的朋友。
变速的方式变速实际上是对原始素材的抽帧和补帧,而对于我们来说,最需要知道的是:变速后的每一帧,对应的是原始素材中哪一帧画面。
比如,知道变速后的1001帧,是原本的1005帧,这样把1005帧的动画复制到变速后的1001帧,就可以完成了这一帧的匹配。
为了得知变速后的对应原始帧,我们可以用这样一个验证方式。首先用软件输出一个这样的(纯数字)序列帧。
然后套上变速节点进行观察。在Nuke中常用的变速节点有Retime,OFlow,Kronos等。
首先使用retime节点做最简单的倍速变速。这里为范围1001-1100的序列帧做一个1.9倍的变速,filter就默认使用box。
点击变速后的每一帧,可以看到对应的图像。比如变速后的1 ...
Article
未读介绍MetaHumans Creator是虚幻引擎用来创建cg角色的工具。如同官方介绍的一样,它能够在几分钟创造出一个照片级的数字角色。
可以将它导入到Maya,Blender,Unreal等软件进行动画制作和渲染。(下图为MetaHuman的面部绑定)
MetaHumans Creator暂时是一个云端流应用(不知道以后会不会演变成本地app)。如果要使用它,需要在虚幻官网申请测试权限,这里贴一个申请链接:https://www.unrealengine.com/zh-CN/metahuman-creator
点击申请测试权限,填一下需要的信息就好。
使用MetaHuman Creator的一些要求:
需要unreal的版本大于4.26(如果要将MetaHuman导入到unreal中)
需要下载安装Quixel Bridge应用(用于模型导出)
每次使用云端工具时间为一小时,一小时后会自动关闭网页会话,等待一小段时间可以再次开启云端应用
开始使用获得测试权限后,在这个链接登陆即可:https://metahuman.unrealengine.com/需要等待数分钟,给它一些 ...
Article
未读前言
看过之前电影视效制作中的Matchmove这篇文章的朋友应该知道,跟踪最基本的步骤就是为匹配物或场景添加二维跟踪点。
在进行摄像机反求的时候,可能单一软件的解算效果不是很理想,通常我们切换到另一个软件进行尝试解算。(比如对于变焦镜头来说,SynthEyes的变焦解算会稍好于3DEqualizer。)而这些二维跟踪点,在跟踪软件之间是不互通的。
当我们已经完成了二维点的添加工作,想要更换跟踪软件的时候。就需要一个工具来进行点之间的转换。
分析为了得知不同软件之间导出二维点格式的区别,我们可以在同一段素材的同一个位置,添加一个二维点。然后导出:
首先可以看到,点数据是以一个txt文本存储的,里面记录了点的名称,帧数,和对应帧的x,y位置。
其中除排序格式不一样之外,最重要的则是对二维点x,y位置描述上的不同。像3DE,PFTrack和Boujou,是以图像像素为标尺。而SynthEyes则要独树一帜些。
以1920x1080的尺寸素材为例,我们可以为素材的四个角分别添加跟踪点,观察点的x,y数值,这里用画图来表示结果:(红线为X轴,绿线为Y轴)
PFTrack和3DE是相同的, ...
Article
未读来自未知开发者1sudo xattr -rd com.apple.quarantine sesinetd
你没有权限打开应用程序123456brew install upx# 这里以xf-adsk软件来举例# 把xf-adsk放到桌面,右键包内容进入到MacOSsudo upx -d /Users/lingyunzhang/Desktop/xf-adsk20.app/Contents/MacOS/x-force
打开dmg资源忙1.打开活动管理器2.搜索disk的进程
3.随便退出几个进程就可以了(双击 - 强制退出)
Homebrew安装12345# 官方安装/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"# 国内源/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
今后安装 ...
Article
未读前言视效制作中,在完成Camera Tracking后,可能会被告知:“素材进行了翻转处理”。然后丢给你一个镜像后的素材,并要求你重新进行Tracking。
翻转素材一般有两种情况:
基于x轴镜像
基于y轴镜像对于这样的镜头,不用重新再做一遍Tracking,只需要在Maya里进行一些处理就可以了。
这篇文章主要是讲如何让摄像机和场景物体匹配上翻转后的素材。
基本方法1.对于x轴翻转的,将摄像机的ty,rx,rz轴的数值设为其相反数。
2.对于y轴翻转的,将摄像机的tx,ry,rz轴的数值设为其相反数。
3.最后把场景中其它物体(不要摄像机)打组,以原点为中心缩放-1的数值。(如果是x轴翻转,缩放y轴;如果是y轴翻转,缩放x轴)
脚本实现上述最麻烦了的就是对摄像机进行操作,因为如果手动的去修改每一帧数值会非常繁琐。
通常这样的问题可以交给代码来处理。
1234567891011# 选择你的摄像机,运行下面的代码import pymel.core as pmcam = pm.ls(sl=1)[0]start_t = int(pm.playbackOptions(q=1, min=1) ...
Learn
未读安装在官网 https://docs.conda.io/en/latest/miniconda.html#macosx-installers 下载:
在终端里(会安装到当前目录):
12345bash Miniconda2-latest-MacOSX-x86_64.sh# 需新建Terminal Session或手动加载环境变量来使得conda生效# 手动加载source ~/.bash_profie
常用命令创建虚拟环境12# 这里djangocms为环境名称conda create -n env_name python=2.7 -y
激活以及退出虚拟环境12345678# 激活conda activate env_name# 查看环境下所有pip包pip freeze# 退出conda deactivate
列出所有存在的环境1conda-env list
删除一个已有环境1conda remove --name env_name --all
包管理123456789# 查看当前环境下已安装的包conda list# 查看某个指定环境的已安装包conda list -n ...
Article
未读下面的内容在py3.8测试ok,有些是3.5或者3.7之后才开放的特性
语句变成函数print语句在python3里变成了print()函数。
1234567# python2print 'hello pig!'# python3print('hello pig')print('1', '2', '3', sep='+')print('1', '2', '3', sep='\n')
raise语句。
12345# python2raise Exception, 'I made a mistake.'# python3raise Exception('I made a mistake.')
当然还有exec()。
12345# python2exec 'print("Hello World")'# pyt ...
Learn
未读公共属性使用id()可以查看,公共属性的地址是一样的。
Dog.d_type = '藏獒' 一旦更改,其他的实例对应属性也会随之更改。
12345class Dog: d_type = '京巴' # 公共属性, 类属性, 类变量 def say_hi(self): print('hello, i am a dog, my type is ', self.d_type)
好处是可以节省内存空间。
重写父类的方法继承父类方法后,需要重写父类方法,并调用父类方法的话。
可以用到super函数
1234567891011121314151617181920212223class Animal: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex def eat(self): print('%s is eating..' % self.n ...