【Blender】如何使用Festivity方案一键三渲二 - FBX版本

导言

何为三渲二

三渲二就是2d风格的3d渲染

三渲二有什么奇功

减少阴影计算,使得光照扁平化,画风类似日本二维动画

相比普通二维与三维动画,三渲二的优势就在于可以既能保持二维动画的美术风格,同时减轻画师的工作负担,缩减制作成本和周期,同时也具备自由的运镜方式。目前三渲二动画在包括动画产业大国日本在内的国外市场上已经成为了一个单独的品类,这足以说明它对行业发展的重要程度。

若直接使用3d渲染,需要考虑场景光照是否真实,人物面部光线,全局光,光线追踪等等,同时受限于计算机动画,难以模拟真实人物的动作神态等,容易引发恐怖谷效应。

如果使用三渲二效果,则减轻了很大部分的光照计算负担,画风也很容易接受

效果实例

3D渲染-cycles

Its Splash by Piotr Krynski

三渲二 Ar-Sr-Na mmd

三渲二具体原理,此处不再介绍,简单地说,就是无阴影,削除阴影让其看起来很像日式动画

准备

众所周知,我的观众游泳技术不好,没办法游到海外去看youtube上的教程,而我擅长游泳,所以特地去学了这个教程为大家转述

注意:由于插件限制,blender仅支持3.1以上版本,此处使用blender3.4

教程内有两种办法用于三渲二,作者建议请先粗略阅读一遍再考虑哪种方法,不然边看边做到中途发现不行就完蛋了。

festivity效果类似米哈游原神中的渲染效果,而米哈游实现该效果引用了Lightmap也就是ILM贴图,如果没有需要手动绘制。

软件

blender 3.4 Download — blender.org

FBX Converter(用于转换FBX模型,可选)

Shaders

Blender miHoYo Shaders:github

自动化处理插件(适用FBX方案):github

模型

注意:原作者Festivity使用的是fbx模型,这种方法更加快捷,但是不建议使用在动画上,因为需要花时间k帧,不一定能套用现有动作。

FBX方案

模型fbx文件以及材质,因版权原因请自行寻找(提示:github)

这是正确的FBX模型拥有的文件

文件名

内容

*.fbx

基础模型

*Diffuse

diffuse贴图通道

*Lightmap

光照贴图

*Shadow_Ramp

阴影贴图

*Shadow

阴影过渡

本文介绍该方案

PMX方案(原生mmd)推荐

cats-plugin(用于导入pmx模型,vmd动作)

pmx模型(自行寻找)

贴图(包括光照,阴影等)此处建议沿用FBX方案中的贴图

下期介绍该方案

FBX方案

目前经过测试能够一键运行不出错的角色如下:安柏、苏,柯莱、多莉、胡桃,神里绫人、刻晴、荧、纳西妲、妮露、罗莎莉亚、提纳里、夜兰

这里不展示一键运行如何使用,因为如上模型我没一个能一键成功的。

1.安装自动化处理插件

Addons-And-Tools-For-Blender-miHoYo-Shaders/setup_wizard at main · michael-gh1/Addons-And-Tools-For-Blender-miHoYo-Shaders (github.com)

如图所示

启用插件

2.导入模型

在3d视图按键盘上<N>,选中选项卡上的<Genshin>

单击<Set Up Character>

选择FBX及材质所在文件夹,并单击蓝色导入按钮

这时候模型已经导入进来了,但是是躺着的,选中模型,在变换选项卡里面将X轴改为90

3.导入材质

全选模型,单击Genshin选项卡里的Set Up Materials,选择上面下载的 miHoYo - Genshin Impact.blend(不建议使用Goo Engine的那个文件)

提示 Imported Shader/Genshin Materials... 则完成

这时候切到视图渲染,效果如图

4.设置光照材质

给一个材质节点视图

检查下对应材质节点有没有出错

按照提示选择对应的贴图

给 body,hair,face,dress都检查一下,有没有漏选贴图的

来到 Ramp 节点组这里,点这里展开

根据提示选上,点击这个面板里右上角箭头返回

对每一个节点都这么处理

改得差不多就行了,不是所有节点都必须有的,lightmap和ramp是必须要改的

5.绑定脸部动作

如果直接完成的话,阴影不会跟踪人物,所以必须让 Main Light Direction 绑定骨骼

Bone选择头部

6.查看效果

渲染颜色模式改为标准,不然效果不佳

这时,动一下 Main Light Direction 的Z轴旋转,或者姿态模式让人物动下头,效果就有了

总结

本方案需要手动改动的地方较少,设置简单

但由于很多mmd模型都是pmx,pmd,材质光影之类的比较难找到,如果一键不能导入,那就很麻烦了,一个个地修改很费时间

实时处理起来可能很卡,我的CPU都冒烟了,不敢开渲染视图


Powered by Ar-Sr-Na

允许署名转载

本文转载于网络 如有侵权请联系删除

相关文章

  • 虚假信息处理最新有何进展?KDD2022《打击错误信息和应对媒体偏见》教程

    来源:专知本文为教程,建议阅读15分钟我们的社会有必要更好地了解并制定有效的机制来纠正错误信息和有偏见的报道。复制在线平台的发展极大地促进了人们相互交流和了解趋势事件的方式。然而,它也产生了前所未有的不准确或误导性信息,因为传统的新闻守门无法跟上媒体传播的步伐。这些不受欢迎的现象导致了社会因非理性的信仰而撕裂,股票市场冲动波动导致金钱损失,以及在COVID-19大流行期间因其产生的信息流行病而发生本可以避免的死亡事件等。即使是不相信错误信息的人,也可能会被周围不健康内容的污染所困扰,这种令人不快的情况被称为信息混乱。因此,我们的社会有必要更好地了解并制定有效的机制来纠正错误信息和有偏见的报道。我们选择了一些真实世界的假新闻及其对社会的有害影响作为教程主题的开始,然后进行了一个教学练习,介绍人类如何处理假新闻的检测、表征和纠正问题。我们将指出各种类型的假新闻在概念上的区别,包括新闻新闻中对错误归因或不存在的事件的严重捏造,过度耸人听闻的点击诱饵,旨在被传统新闻网站转载的虚假新闻和模仿真实新闻但包含讽刺和荒谬的讽刺。例如,一般来说,新闻文章更有可能涉及严重的捏造,而社交媒体上的帖子则更多地

  • Proofs, Arguments, and Zero-Knowledge 4.2&4.3

    Proofs,Arguments,andZero-Knowledge01Proofs,Arguments,andZero-Knowledge02Proofs,Arguments,andZero-Knowledge03Proofs,Arguments,andZero-Knowledge4.1TheSum-CheckProtocol Chapter4InteractiveProofs4.1TheSum-CheckProtocol4.2FirstApplicationofSum-Check:#SAT∈IP4.3SecondApplication:ASimpleIPforCountingTrianglesinGraphs4.4ThirdApplication:Super-EfficientIPforMATMULT4.5ApplicationsoftheSuper-EfficientMATMULTIP4.6TheGKRProtocolandItsEfficientImplementation4.7Exercises4.2FirstApplicationofSum-Check:#SAT∈IP设φ为

  • Python 自动备份SVN版本库并复制到远程主机脚本

    #!/usr/bin/python --coding:utf-8-- importos importre importtarfile importdatetime importpexpect basedir='/data/bak/'#文件夹 iplist=['']#IP地址 defget_list(txt_file): ret_list=[] fin=open(txt_file,'r') forlineinfin: if(re.match('^\s*$',line)):#跳过是空白的行 continue else: line=line.lstrip() line=line.rstrip()#将回车(\n)去掉 ret_list.append(line) #print('debuginfoofget_list:\n',ret_list) returnret_list defcopysvn(filelist):#这个函数主要是完成dump name=[] name=os.path.s

  • Firewalld 2

    前言Firewalld是一个本地的网络策略管理软件,与iptables启相同的作用Firewalldprovidesadynamicallymanagedfirewallwithsupportfornetwork/firewallzonesthatdefinethetrustlevelofnetworkconnectionsorinterfaces.IthassupportforIPv4,IPv6firewallsettings,ethernetbridgesandIPsets.Thereisaseparationofruntimeandpermanentconfigurationoptions.Italsoprovidesaninterfaceforservicesorapplicationstoaddfirewallrulesdirectly从RHEL7/Centos7开始,系统默认的防火墙软件从iptables替换成了firewalld这的确是一个不小的变化,从而让很多以前熟悉iptables的运维小伙伴一下子变得无所适从相对于iptables,firewalld的确有一些更先进

  • SOTA排行榜大变天!MIT研究十个CV测试集,平均错误率超3.4%

    【新智元导读】如果测试集不靠谱,那测出来的模型性能会靠谱吗?MIT研究了10个流行的CV的数据集,平均测试集的错误率超过3.4%,最多的竟然错误超10%。「2021新智元首期AI家论坛——“创新之都AI赋智”在中关村软件园召开。新征程,新跨越,新智元邀您在新浪直播一起见证。赶快戳下方链接直达会场:新浪视频直播https://zhibo.sina.cn/news/118265?vt=4;图文云直播链接https://v.alltuu.com/r/2iaey2/」‍「cleancode」是机器学习的基础,在公开的数据集取得更好的效果也是发表论文的基础。众所周知的是,公开数据集并不都是完美的,或多或少都存在标签错误的问题。之前的工作主要关注「训练数据集」中的错误,忽视了「测试数据集」的错误。MIT在arxiv上传了一篇论文,研究了10个流行的数据集,借助Amazon的众包平台MachineTurk来检验错误率。通过算法识别并人工验证,发现确实普遍存在标签错误,10个数据集的平均错误率为3.4%MNIST也会出错?即使是久经沙场,被无数论文作为基准测试过的MNIST数据集,在测试集中也包含15

  • 计量笔记 | 简单线性回归

    1.简单线性回归总体回归函数(PRF)与样本回归函数(SRF)可使用蒙特卡洛法进行模拟,所谓“蒙特卡罗法”(MonteCarloMethods,MC),是通过计算机模拟,从总体抽取大量随机样本的计算方法。*PRF和SRF:蒙特卡罗模拟 clear setobs30 setseed10101 genx=rnormal(3,4) gene=rnormal(0,9) geny=1*x+e//DataGenerationProcess regyx twfunctionPRF=1+2*x,range(-515)||/// scatteryx||lfityx,lp(dash) 复制计量经济学的主要任务之一就是通过数据\{x_i,y_i\}_{i=1}^n来获取关于总体参数(\alpha,\beta)的信息。1.1OLS估计量的推导目标:残差平方和最小\min_{\hat\alpha,\hat\beta}\sum_{i=1}^ne_{i}^2=\sum_{i=1}^n(y_i-\hat\alpha-\hat\betax_i)^2 此最小化问题的一阶条件为:\begin{cases} \frac{

  • 面试题:rm 删除文件之后,空间就被释放了吗?你知道答案吗?

    产生一个指定大小的随机内容文件一个文件什么情况下才会被删除?如何释放已经被删除文件占用的空间?总结在Linux,你是不是曾经天真的以为,使用rm删除一个文件,占用的空间就释放了?事情可能不是常常如人意。 产生一个指定大小的随机内容文件我们先看一下当前各个挂载目录的空间大小:$ df -h /dev/sda11      454M  280M  147M  66% /boot复制我这里挑选了其中一个结果展示(你可以选择任一挂载目录),接下来准备在/boot下生成一个文件。首先我们产生一个50M大小的文件:$ dd if=/dev/urandom of=/boot/test.txt bs=50M count=1复制至此,我们产生了一个50M大小的文件,再看boot下:$ df -h /dev/sda11      454M  312M  115M  74% /boot复制这里你不用关心到底多了多少,你只需要关注,/boot下的文件增多了。测试程序:#include<stdio.h> #include<unistd.h> int main(void) {     FI

  • CSS简笔画:纯CSS绘制一艘邮轮

    本节你能get到什么前端知识1、CSS变量2、CSS伪类的灵活使用3、CSS绘制梯形、箭头、转发箭头4、CSS相对定位和绝对定位5、CSStransform变形6、CSSbox-shadow7、CSSFlex布局看图解构1、梯形船体2、中间部分有一个镂空的梯形3、船体上有船名、船锚4、甲板上有护栏5、船上有货物6、还有一根旗杆解构后发现东西并不多!梯形船体<divclass="ship"> <divclass="ship-body"></div> </div>复制:root{ --seaColor:#54a0ff; --lineColor:#fff; --enclosureColor:#000; } body{ width:100%; height:100vh; } .ship{ position:absolute; width:480px; height:150px; left:50%; top:50%; margin-left:-240px; margin-top:-75px; } .ship-

  • Android中Wifi网络配置信息的保存加载与更改—WifiConfigStore.java解析

    我们先看源码中对WifiConfigStore这个类的解释:*ThisclassprovidestheAPI'stosave/load/modifynetworkconfigurationsfromapersistent *store.Useskeystoreforcertificate/keymanagementoperations. *NOTE:ThisclassshouldonlybeusedfromWifiConfigManagerandisnotthread-safe!复制此类提供API以从持久性保存/加载/修改网络配置商店。使用密钥库进行证书/密钥管理操作。 注意:此类只能在WifiConfigManager中使用,并且不是线程安全的! 一般WifiConfigManager中才会调用WifiConfigStore的方法,比如要加载已保存过的网络时,要迁移保存过的网络数据时,都会调用WifiConfigStore的方法。 WifiConfigManager代码路径:/frameworks/opt/net/wifi/service/java/com/android/

  • 基于Bert和通用句子编码的Spark-NLP文本分类

    Spark-NLP中的文本分类在本文中,我们将使用通用句子嵌入(UniversalSentenceEmbeddings)在SparkNLP中建立一个文本分类模型。然后我们将与其他ML和DL方法以及文本向量化方法进行比较。SparkNLP中有几个文本分类选项:Spark-NLP中的文本预处理及基于Spark-ML的ML算法Spark-NLP和ML算法中的文本预处理和单词嵌入(Glove,Bert,Elmo)Spark-NLP和ML算法中的文本预处理和句子嵌入(UniversalSentenceEncoders)Spark-NLP中的文本预处理和ClassifierDL模块(基于TensorFlow)正如我们在关于SparkNLP的重要文章中所深入讨论的,在ClassifierDL之前的所有这些文本处理步骤都可以在指定的管道序列中实现,并且每个阶段都是一个转换器或估计器。这些阶段按顺序运行,输入数据帧在通过每个阶段时进行转换。也就是说,数据按顺序通过各个管道。每个阶段的transform()方法更新数据集并将其传递到下一个阶段。借助于管道,我们可以确保训练和测试数据经过相同的特征处理步骤。

  • SAP CRM Relationship API设计原理

    Unlikesettype,relationshipdoesnothaveadedicatedreadfunctionmodulemaintainedinitsmetadatatable.Instead,thegenericreadfunctionmoduleCOM_IL_DB_READisused.BelowisasimpleexplanationabouteachparameterofFMCOM_IL_DB_READ,usingreadonrelationshipPRDCPNforexample.IV_RELTYPEPRDCPN-relationshipnameIV_ATTR_TYPECOMT_IL_PRDCPN_ATTR_TYPE-containsrelationshipspecificbusinessdata,inthisexample,thecustomerproductidisstoredinfieldPRID_VENDORIT_LINK_IDENTSsourceguidordestiguidcontainsproductguid.Thiswillbeusedbythege

  • 图解 LeetCode 链表: 82. Remove Duplicates from Sorted List II

    今天是LeetCode算法的第1阶段第2天,这一阶段主要学习链表相关的算法题和链表数据结构。这道题是上一道的升级版。Givenasortedlinkedlist,deleteallnodesthathaveduplicatenumbers,leavingonlydistinctnumbersfromtheoriginallist. Example1:Input:1->2->3->3->4->4->5Output:1->2->5 Example2:Input:1->1->1->2->3Output:2->3 LeetCode分析移除链表中出现过多次的节点,解这道题的思路也是「水管思路」,对水管进行拆分,重组。链表中可能出现多个重复节点,需要把这些重复的节点全部干掉。列表L1=1->1->2中第1个节点和第2个节点重复,移除,把第3个节点接到根节点的后面: 列表L1=1->1->1中所有节点重复,需要都移除: 代码因为链表是有序的,重复的节点可能有多个,只有当前节点即不等于上一个节点也

  • 120万美元机器24分钟训练ImageNet,UC Berkeley展示全新并行处理方法

    选自UCBerkeley机器之心编译参与:李泽南、蒋思源今年6月,Facebook实现1小时训练ImageNet的成绩之后,通过增加批量大小以加快并行训练速度的方式引发了人们的关注。最近UCBerkeley的研究人员们为我们展示了24分钟训练ImageNet的成绩,他们将批量大小增加到了32k。研究人员表示,在同样成绩下,新的方法使用的计算设备成本(120万美元)大大低于Facebook(410万美元)。对于深度学习应用而言,模型、数据集越大,结果就越精确,但同时也意味着训练时间的增长。例如,用ResNet-50模型在ImageNet-1k上完成90个epoch需要14天时间,这样的训练共需要10^18次单精度计算(singleprecisionoperations)。另一方面,世界目前最为强大的超级计算机可以在每秒钟进行2×10^17次单精度计算。如果我们可以完全利用超级计算机的能力,那么使用ResNet-50模型在ImageNet-1k上应该可以在五秒内完成90个epoch的训练。然而,目前我们面临的DNN训练瓶颈在算法层面上。具体来说,目前我们使用的批量过小(如512),这让处理

  • 记录一次杭州顺网科技的面试过程

    css 如何水平垂直居中,请尽量多说几种方法?很尴尬,我多次面试都被问到这个问题,fuck定位(回答了)、table-cell布局、flex布局、translate+relative定位 w3c和ie盒模型区别我回答反了尴尬 jquery jquery中如何只实现一次事件绑定$('dom').one这个方法我居然一次也没用过,也没见过 事件委托的原理貌似回答错了,事件冒泡和事件捕获,不同浏览器机制不同,我两者居然结合在一起了,说先冒泡再捕获,打脸哦 jsonp原理勉强回答出来了,算正确吧 js 原型链继承 闭包、作用域 this以及如何改变this执行 vue vue如何实现原理object.defineproperty数据劫持,只回答出这么一个知识点。 说出v-for是如何实现的懵逼的 模块 webpack实现原理刚学webpack还看错,1年过去了,早忘记了 import和export用法面试题这个也做错了。紧张。 以上是面试中笔试涉及到的知识点或者后面被问到的只是点。以下是笔试题,貌似有2套,但我拿到的是另外一套。也许是根据薪资和面试的等级来出题的。我刚面试完回家

  • java基础解析系列(七)---ThreadLocal原理分析

    java基础解析系列(七)---ThreadLocal原理分析 目录 java基础解析系列(一)---String、StringBuffer、StringBuilder java基础解析系列(二)---Integer缓存及装箱拆箱 java基础解析系列(三)---HashMap原理 java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现 java基础解析系列(五)---HashMap并发下的问题以及HashTable和CurrentHashMap的区别 java基础解析系列(六)---注解原理及使用 这是我的博客目录,欢迎阅读 作用 与同步机制区分开来,同步机制是为了解决在共享情况下并发导致的问题。而ThreadLocal是避免了共享 在多线程情况下,为了避免共享,我们可以采用多线程多实例的方式,也可以使用ThreadLocal来避免共享冲突 什么是ThreadLocal ThreadLocal提供了线程本地变量,它可以保证访问到的变量属于当前线程,每个线程都保存有一个变量副本,每个线程的变量都不同。ThreadLocal相当于提供了一种线程隔离,

  • CF848D题解

    考虑如果边\((u,w),(w,v)\)是从\((u,v)\)分裂出来的,那么\((u,v)\)这条边有一个儿子,儿子是一个二元组为\(((u,w),(w,v))\)。 容易发现所有本质不同的分裂方案对应所有本质不同的树。 考虑最小割对应什么。对于一个根节点,必须将所有儿子都割完之后才能割掉自己,所以有一个类似: \[f[n][m]=\sum_{\sum(a_i+b_i)=n,\sum(\min(x_i,y_i))+1=m}f[a_i][x_i]\timesf[b_i][y_i] \]的东西。 实际上这样还是有可能会算重(原问题是无序的,背包是有序的)。设: \[g[n][m]=\sum_{a+b+1=n,\min(x,y)=m}f[a][x]\timesf[b][y] \]来进行辅助计算。 容易发现\(g[n][m]\)对应的任意二元组形态都不同。 先考虑用相同的\(g[n][m]\)填充一个集合,然后用所有的集合去填充\(f\)。 设\(G[n][m]\)表示所有二元组都是\(g[n][m]\)集合中的元素,容易知道这个方案数是: \[G[n][m]=\sum[x^i](\frac

  • 去除数组中的空值

    sku_array.forEach(item=>{ item.splitName=item.splitName.filter(function(n){ returnn }) })复制  

  • flask send_file设置缓存过期时间

    https://github.com/pallets/flask/blob/1.1.x/src/flask/helpers.py   如果不设置过期时间,可能多次下载会去请求缓存      

  • lamp环境搭建(centos6.9+apache2.4+mysql5.7+php7.1)

    lamp环境搭建(centos6.9+apache2.4+mysql5.7+php7.1) 安装前准备:CentOS6.964位最小化安装 yuminstall-ymakegccgcc-c++perlzlib-devellibaiolibpnglibpng-devellibjpeg-develpcre-devel yuminstall-ylibXpm-developensslopenssl-devellibxml2-develbzip2-devel.x86_64libjpeg-turbo-devel yuminstall-yfreetypefreetype-devellibtoolcmakencurses-develbisonre2ccurl-develwget rpm-ivh"http://mirrors.sohu.com/fedora-epel/epel-release-latest-6.noarch.rpm" yuminstall-ylibmcrypt-develre2c 复制 一、安装MySql 1.编译安装 下载软件包 cd/usr/local/src/ wgethttp:/

  • 顶测科技|工作迷茫,如何解决?

    上学时,老师经常说,“有能力的人,在哪里都能发光”。然而,真正进入了职场后才发现,原本学习不如自己的同学,可能工资比自己还高,而原本学习好的同学,却工资平平。出现这样的反差并不意外,在人生路上会面临各种选择,每一次选择,都会造就不一样的未来。  所以,当你初入职场不久,觉得自己已经非常努力了,依然看不到未来。这时候不如先看看自己现在所在的平台,是不是没有发展机会??或者岗位技术含量并不是很高,得不到重视??一旦发现是这样的原因,赶紧离开这个平台,不要无原则的吃苦! 有时,无意义的磨练我们是可以、并且需要避免的。 在职业初期的时候,一个好的平台能够帮助你事半功倍。 如果你对未来感到非常迷茫,不知道该从事什么样的工作,或者不知道什么样的工作更有发展,可以了解关注下软件测试这个岗位。     软件测试的工作内容是利用专业的测试工具,测试方法找出软件漏洞,然后提交给开发部修改,不需要敲代码,脑力强度并不大。软件测试属于越老越吃香的IT行业的技术岗位。值得一提的是软件测试更适合0基础学习的IT技能,无论男生、女生,文科生、理科生、都是可以学会的。 只需要

  • css权重是什么

    css权重是什么? 概述 cssSpecificity中文一般译为css优先级、css权重。相比“权重”,“优先级”更好理解,mozilla官方中文文档就翻译为“优先级”。 Specificity基于设定的匹配规则,浏览器通过设定好的优先级来判断哪些属性值DOM元素最为相关,从而在该DOM上应用这些值。 简单理解就是一个DOM的某个属性值有多个css样式设置,优先级高的那个应用。很多css设置不生效的问题,都是因为在某处定义了一个更高的优先级,从而导致该处样式不生效。 优先级的顺序如下: important>内联(style)>ID>类(class)>标签(li...)|伪类(:hover,:focus...)|属性选择[attr='']>伪对象(:before,:after)>通配符(*)>继承(inherit) 那么如何确定优先级呢? Specificity值的计算 先说结论: 一般采用10进制的简单相加计算方式。从0开始,一个行内样式+1000,一个id+100,一个属性选择器/class或者伪类+10,一个元素名,或者伪元素+1. 复制

相关推荐

推荐阅读