Blender Studio
  • 电影
  • 专案
  • 训练
  • 资源
  • 部落格
  • 社区
  • 加入
  • BLENDER.ORG

    • 下载

      获取最新的 Blender、旧版本或实验版本。

    • 最新消息

      关注最新 Blender 版本的新功能。

    学习与资源

    • Blender Studio

      从开放电影中获取制作资产和知识。

    • 手册

      Blender 使用和功能的说明。

    开发

    • 开发者博客

      Blender 开发者提供的最新开发更新。

    • 文档

      指南、发布说明和开发文档。

    • 基准测试

      一个收集和分享 Blender 基准测试结果的平台。

    • Blender 大会

      一年一度的社区聚会活动。

    捐赠

    • 开发基金

      通过每月捐款支持核心开发。

    • 一次性捐款

      使用更多可用的支付选项进行一次性捐款。

训练重点
面部绑定
Blender 基础知识 4.5 LTS
使用 Blender 进行 3D 打印
视频日志#6:宣传视频

训练类型
课程 文档 制作课程 工作坊

训练类别
动画 几何节点 灯光 渲染 骨架 着色
电影重点
奇点
2025
展翅翱翔
2023
春天
2019
英雄
2018
专案重点
冲动购买
展示
项目:风暴
展示
遛狗
展示
项目:黄金
展示
资源重点
角色
模型和装置
资源
所有制作文件
库
精选集

绑定着色器

了解我们控制链接动画角色着色器属性的方法。
  • 文章
  • 9 Sep 2024
  • 1 min read
Simon Thommes
Simon Thommes Author
Report Problem

特别是对于角色装备,通常需要在镜头级别向动画师或灯光艺术家公开对着色器属性的某种控制。这可以是为了从角色的不同变体中进行挑选。或者可能是为了获得对外观更精细的控制,尤其是在使用更风格化的 NPR 着色方法时。

展示使用灯光装备参数来控制 展翅翱翔 中角色的着色器效果。

我之前在 之前关于 展翅翱翔 上的角色着色的博客文章。但从那时起,我们对其进行了轻微改进,它足够有用且具体,足以受到关注和解释。我将首先介绍该方法的技术方面,然后展示如何在管道中使用它。

问题

虽然库覆盖在动画方面提供了很大的灵活性并处理高级角色装备的所有复杂依赖关系,但它们还需要在您想要更改的地方本地化和复制所有复杂性,甚至是简单的单独设置。

因此,在像我们这样的管道中,数据在不同文件之间链接(库 -> 动画 -> 光照),您最终可能需要覆盖不同级别上角色的属性。虽然您可以从技术上在任意数量的嵌套层中创建库覆盖的库覆盖,但这会带来大量的技术债务,而这可能不需要首先创建。

库覆盖

让我为您提供更多技术背景来解释有关库覆盖的完整情况:

库覆盖创建被覆盖的层次结构的完整本地副本,以便您可以在文件中进行本地更改,然后 Blender 使这些内容与该层次结构的库版本的任何更改保持最新。因此,要覆盖数据块,比如说角色装备的骨架对象,依赖于该数据块的所有内容也都需要被覆盖。这包括包含引用装备属性的驱动程序的数据块。在更基础的层面上,库覆盖尚不支持覆盖 Blender 中的每种类型的数据块。

简而言之:要创建材质取决于装备的角色的完整副本,您需要复制材质和装备。由于各种原因,这还没有得到支持。

可以通过将对设备的依赖转移到可以覆盖的数据块来缓解这个问题。例如,着色器节点组和几何节点修改器都可以使用对象属性来完成。

对于着色器节点,您可以在对象级别创建自定义属性,并使用“属性”节点根据名称将此信息传递到着色器节点树中。然后,该对象属性可以引用装备中的任何内容,因为它可以被覆盖(只需确保“Library Overridable”设置已启用)。对于几何节点,这通过使用修改器输入来实现。因此,不要在节点设置中创建引用装备或对象/集合指针的驱动程序,而是确保公开有问题的参数并将引用放在修改器输入上,这些输入是对象属性的一部分。

解决方案

我们发现,库覆盖本身不足以满足每种类型的用例,尤其是在控制材料的属性时。

查看图层属性

如何使用视图图层属性共享属性的基本示意图

如何使用视图图层属性来共享属性的基本示意图概述

我们通过将实际角色及其所有数据块和装备完全分离成单独的层次结构,甚至单独的文件来解决这种情况。我们不是在装备上创建角色的直接依赖关系,而是创建对活动视图层(不是数据块)的属性的依赖关系,这是通过其名称引用的。此视图图层属性提供了一个中心、中立的通信点,然后由装备写入并由镜头文件内的角色读出。这样角色和装备之间就没有直接的参考。

除了视图图层属性之外,您还可以在角色层次结构中定义一个目标对象,该对象将接收属性作为自定义属性。然后可以通过驱动程序直接引用它们,而不是使用活动视图层。

自动执行 python 脚本

切换以在文件加载时将文本数据块作为 python 脚本运行。

切换以启用在文件加载时将文本数据块作为 python 脚本运行。

Blender 支持自动化各种操作,并使用其 python API 提供自定义功能和用户界面。还可以通过执行在 Blender 内部文本编辑器中创建为文本数据块的脚本来调用此功能。除了从用户界面手动运行脚本之外,您还可以在文本属性中启用“注册”设置。这将确保脚本在包含它的每个文件加载时自动运行。

这是我们在 Blender Studio 中经常使用的一种技术,以可靠且非侵入性的方式对链接数据进行各种快速修复。我们的Lighting Overrider工具用于为各个属性创建即时覆盖,例如,我们在照明过程中大量使用的完全基于这个概念。

将 python 脚本附加到数据块

将文件加载时自动执行脚本的能力转变为为我们的问题提供解决方案的强大机制,是将其与可以将脚本附加到数据块的事实相结合。只需从 python 控制台运行“C.object['script'] = D.texts['name_of_script.py']`,您就可以将脚本数据块(在每次文件加载时自动执行)附加到对象数据 -堵塞。这意味着,任何以某种方式引用该对象的文件(例如通过链接和覆盖它)都将在文件加载时运行脚本。这样您就可以创建各种强大的资产,并具有自己的 python 功能。例如,当角色链接到场景时,如何确保 3D 视口中的 Cloudrig UI 显示出来。

照明装置

我们提出的概念结合了这些不同的想法,并允许我们为链接数据创建控制器对象,我们称之为“照明装备”。照明装备只是一个空对象,其中包含一组自定义属性,并附加了一个 Python 脚本,这将使其属性在视图层上无论使用什么地方都可用。

因此,附加到每个照明装备的脚本会收集场景中的所有照明装备对象,并在视图层上设置其属性的副本,这些属性通过驱动程序链接到照明装备属性。

实际上,这意味着添加到照明装备的任何属性都可以在使用该照明装备的任何场景中用作视图图层属性。从那里,着色器和驱动程序可以拾取它,而无需设置角色对照明装备对象的直接依赖关系。

用法

除了实际脚本的作用的所有细节之外,让我向您展示如何在实践中使用这种设置:

首先下载基本安装文件:

lighting_rigs.blend

Blender文件 - 593.5 KB - CC-BY

下载文件

视频

以下视频介绍了将其设置为制作课程的不同步骤和方面。下面也以文本形式列出了各个步骤。

步骤

设置照明设备

  • 重复的基础空对象
  • 设置“_name”自定义属性
  • 添加任意对象自定义属性

设置资产

  • 将照明装置链接到资产文件(资产层次结构之外)并覆盖它
  • 可选:创建照明装备目标空对象(在资产层次结构内部),并将名为“_tag”的自定义字符串属性设置为“LIGHTING_RIG-TARGET”
  • 重新加载文件触发脚本执行或手动执行
  • 创建对视图层/目标对象上的属性的引用
    • 对着色器使用设置为“视图层”的“属性”节点
    • 出于性能原因,如果您创建了照明设备目标对象,则从照明设备目标对象创建驱动程序
    • 或者创建指向活动视图层的“上下文属性”类型的驱动程序并将路径设置为“[“property_name”]`

设置拍摄

  • 将所有必需的照明设备链接并覆盖到具有链接角色的镜头文件中
  • 根据需要更改参数并设置动画(您始终可以从单个参数中删除覆盖,以将其重置为照明装备文件中的状态)
  • 可选:如果您的管道需要,将覆盖的照明装置进一步链接到其他文件中

示例

使用此方法来控制黄金生产的资产和全局级别的笔触可见性

除了使用它来控制单个角色的着色器之外,它还可以用于在全局级别上在一个位置控制多个角色的属性。例如,我们在金制作中设置了对角色笔触的切换控制,并在每个资源的附加切换之上使用了全局切换;在 展翅翱翔 上,我们对轮廓厚度进行了全局控制,该轮廓厚度将由所有角色共享的基础着色器拾取。

问题

当然,应该指出的是,这种方法也有其自身的问题。库覆盖概念的主要好处之一是您可以轻松创建同一角色的多个副本,并且可以完全单独控制。使用此方法,情况并非如此,因为文件中角色的所有副本都将从照明装备中获取相同的属性。

加入 并发表评论。

电影 专案 训练 部落格
角色
  • 风暴
  • 米卡萨
  • 鲸
  • 贝氏隆头鱼
Studio
  • 条款和条件
  • 隐私政策
  • 联系
  • 混音音乐
  • blender.org
Blender Studio

分享的创作者。

艺术自由始于 Blender 由数谱环球提供技术支持
粤ICP备2024327355号-3