C4D -> Three.js资产制作与导入流程
这篇文章介绍从 Cinema 4D 中的 UV 模型到用于 Three.js 的 .glb/.gltf 资产和纹理的整个过程,该网格将依赖 MeshStandardMaterial 来复制你在 Redshift 中看到的内容, 没有由 Three.js 处理的任何照明。

推荐:用 NSDT场景设计器 快速搭建3D场景。
如果你正在寻找一种方法来导出具有可在 Three.js 中主动点亮的纹理的 .glb/.gltf 资产,请查看我关于从 Redshift 烘焙 PBR 样式贴图的另一篇文章。 因为这篇文章主要关注导出过程,所以我不会讨论如何对模型进行 UV或如何将 .glb/.gltf 导入 Three.js 并分配纹理。
本系列的后续文章将包括优化流程和资产的重要方法、此方法的缺点以及其他提示和技巧。
1、从任何UV 模型开始
你要导出的任何模型都需要有一组合适的 UV。 虽然我知道使用 Redshift 有时会使应用着色器不需要此过程,但你计划导出为 glb/gltf 的模型必须经过 UV。 这就是 C4D/Redshif 知道如何将材质/纹理烘焙到图像中,所以 Three.js 知道如何将该纹理应用于模型顶点。
记住要保持你的模型的几何体低多边形,毕竟这是一个 Three.js 场景。

2、添加 Redshift 材质并照亮场景
通过在 Redshift 中添加材质/纹理等来完成场景并照亮。请记住,最后我们将烘烤出一个单一的平面pass以应用于模型,而无需在 Three.js 中处理任何照明,因此有些东西不会转换(即凹凸/移位) 会影响烘焙的外观(即裂缝会有阴影),但你不会在模型本身上看到任何凹凸/位移。

3、检查Redshift 渲染设置并添加 AOV
当我们烘焙纹理时,我们希望在 exr 文件中使用 ACEScg 和原始颜色,这样我们就可以确保保留所有可能的颜色信息。 在“颜色管理”部分的“全局”选项卡中对 Redshift 渲染设置进行一些调整:
- 确保渲染色彩空间设置为 ACEScg,
- 将视图设置为“原始”
- 关闭“补偿视图变换”
如果打开 Redshift RenderView/IPR,你会注意到颜色看起来不对。 这是可以预料的。
你还需要在 Redshift AOV 管理器中为 Beauty pass 设置 AOV。 添加通道,然后确保选中“Direct”(可以取消选中“Multi-pass”),并在右侧的“Direct Output”部分下:
- 将格式设置为“OpenEXR”,
- 将每通道位数设置为“浮动(32 位)”
- 将压缩设置为“DWAA”。
如果需要,你可以选择导出其他 AOV,这些 AOV 也将在我们烘焙时输出到它们自己的图像文件中。 然而,由于我们只是希望将我们在 Redshift 中看到的准确结果转化为 Three.js,所以我们只需要 Beauty。

4、合并烘焙
合并使用相同UV/Texture空间的几何体,添加一个RS BakeSet,然后烘焙!
因为钳子有三个独立的几何体,但我把它们放在同一个 UV/Texture 空间,我想使用这个工作流程临时组合它们:
- 复制组。
- 关闭原始组的编辑器可见性/渲染可见性。
- 对副本执行“连接对象并删除”。 我将其重命名为 Tongs-Combined。

这将确保当我们进行烘焙时,它会将所有 tong geo 的烘焙纹理输出到一个图像文件中,而不是基于每个 几何体 的单独图像文件。 虽然你可以在 Photoshop 中单独组合这些文件,但这会使它更容易,并在纹理图像中为你提供漂亮的边缘绘画/UV 边缘扩展。
现在通过以下方式创建你的 RS BakeSet:
- 选择要烘焙的所有几何体(我的是 Tongs-Combined、GroundPlane 和 CuttingBoard)。
- 转到 Redshift 菜单 -> 工具 -> 纹理烘焙 -> 从选择创建烘焙集。

现在在大纲中选择 BakeSet 并更新宽度和高度。 我做了 2K,这可能有点矫枉过正,但你可以随时根据 Three.js 中场景的需要缩小它们。 如果设置了另一个想要烘焙的 UV 空间,你可以在 UV 源字段中指定它,尽管由于我们所有人都使用默认的 UVW,你可以将其留空。 你还可以验证要烘焙的所有对象是否都列在“对象”字段中。 如果有任何遗漏,可以将它们拖到这里。

现在你可以单击 BakeSet 上的 Bake 按钮。 它会给你一个弹出窗口,你可以在其中设置:
- 纹理的输出文件夹
- 取消选中“Default Beauty AOV”,因为我们已经在 AOV 管理器中配置了一个。

单击“烘焙”,渲染纹理需要一段时间。 你会得到类似下面的东西。

5、对纹理进行颜色校正
因为我们想要我们可以获得的所有颜色信息并且我们在 Redshift 中使用了 ACEScg 颜色空间,所以我们需要对我们的 OpenEXR 进行一些颜色转换,以便通过确保它们在 sRGB 颜色空间中,它们在 Three.js 中看起来是正确的。 我知道如何做到这一点的方法是使用 After Effects:
确保项目设置中的颜色设置使用:32 bps、sRGB,并选中“线性化工作空间”。

将你的 OpenEXR 作为合成导入 After Effects。 确保作为合成导入,但不需要联系表。

将所有 OpenEXR 放入一个合成中。 将它们每个修剪为 1 帧,并及时将它们的位置偏移 1 帧,这样就可以看到它们并使用当前时间指示器擦洗它们。

现在将一个调整层添加到此合成的顶部,并将 OpenColorIO 效果(在此处可用)添加到该层。 从 Configuration 下拉列表中,添加 Redshift 的配置文件,该文件位于 Applications/redshift/Data/OCIO 目录中,名为 config.ocio。

现在将 OpenColorIO 效果设置为“显示”模式。 将输入空间设置为“ACEScg”,并将显示设置为“sRGB”。 颜色还是不对,我们首先需要在 OpenColorIO 效果下面添加一个 Color Profile Converter 效果。 将输入配置文件设置为“sRGB”。最后,我们的颜色应该与我们在 Redshift 中设置材质和灯光时的外观完全一样! 如果你想尽可能地编辑纹理,只需在顶部颜色转换层下方添加任何调整,以确保利用 OpenEXR 中的所有颜色信息。

接下来我们可以将时间轴(所有三个帧)渲染为 PNG 序列,并且我们将准备好在 Three.js 中使用的纹理文件。 现在,以高位深度和全分辨率 (2048) 渲染它们。 输出后,可以降低分辨率或将它们压缩为 jpg 等。它们应该如下所示。

6、将 Cinema 4D 场景导出为 glb/gltf。
切换回你的 Cinema 4D 文件,并准备好导出到 glb/gltf。 你可能希望将场景保存为“-JustGeo”之类的副本,因为我们将清除 Three.js 不需要的东西。
移除所有灯光、相机和你制作的重复几何图形以促进纹理烘焙。 大纲中唯一剩下的东西应该是空值、几何体,如果你有一些被操纵的东西,可能还有骨骼(尽管导出一个被操纵/蒙皮的对象有很多复杂的事情,所以在依赖这个工作流程进行任何动画或操纵之前做一些实验)。 也可以移除材质标签,但保留 UV 标签和 Phong 标签。

现在转到文件 -> 导出 -> glTF 并使用以下设置对其进行配置,然后将其保存。

7、将 .glb 和纹理导入 Three.js
基本上有 4 件事你需要做才能让你的场景在 Three.js 中工作
- 使用基本样板创建通用场景三样东西。画布、场景、相机、轨道控件、渲染器、浏览器窗口的调整大小事件、初始化纹理加载器和 gltf 加载器,以及添加动画循环。
- 从它们的 URI 加载三个纹理文件,将它们的每个编码更新为 THREE.sRGBEncoding,并将它们的每个 flipY 属性设置为 false。
- 创建三个 MeshBasicMaterials(每个纹理一个)并将它们的贴图属性设置为上面的纹理对象。
- 加载 gltf。 在加载过程中,遍历 gltf 并将正确的材质应用于每个几何体(Cinema 4D 导出的命名将保留,因此只需搜索具有这些名称的网格)。 并将 gltf 添加到 Three.js 场景中。
好了!3D 模型将以你在 Redshift 和 Cinema 4D 中开发的相同高质量外观在浏览器中运行。

原文链接:C4D->Three.js流程 — BimAnt
相关文章:
C4D -> Three.js资产制作与导入流程
这篇文章介绍从 Cinema 4D 中的 UV 模型到用于 Three.js 的 .glb/.gltf 资产和纹理的整个过程,该网格将依赖 MeshStandardMaterial 来复制你在 Redshift 中看到的内容, 没有由 Three.js 处理的任何照明。 推荐:用 NSDT场景设计器 快速搭建3D场…...
【博学谷学习记录】大数据课程-学习十三周总结
Hive的交互方式 第一种交互方式:bin/hive hive 创建一个数据库 create database mytest; show databases; 第二种交互方式:使用sql语句或者sql脚本进行交互 不进入hive的客户端直接执行hive的hql语句 hive -e “create database mytest2” 或者我们…...
Spring Cloud快速入门
文章目录Spring Cloud快速入门一、基础概念1、微服务架构2、微服务技术栈3、什么是Spring Cloud?4、Spring Cloud和Spring Boot的联系?5、比较成熟的互联网架构二、Rest环境搭建1、搭建提供者1.1、创建一个父工程1.2、创建一个springcloud-api模块1.3、创建一个spr…...
论文学习——VideoGPT
论文学习——VideoGPT: Video Generation using VQ-VAE and Transformers 原文链接:https://arxiv.org/abs/2104.10157 1. 设计思路 不同种类的生成模型在一下多个维度各有权衡:采样速度、样本多样性、样本质量、优化稳定性、计算需求、评估难易程度等…...
Flutter系列(五)底部导航详解
Flutter系列(四)底部导航顶部导航图文列表完整代码,如下: Flutter系列(四)底部导航顶部导航图文列表完整代码_摸金青年v的博客-CSDN博客 目录 一、前言 二、Scaffold组件 三、BottomNavigationBar组件 …...
『pyqt5 从0基础开始项目实战』02. 页面布局设计(保姆级图文)
目录弹性布局介绍导包和框架代码布局框架搭建1. 总体布局框架2. 顶部菜单布局3. form添加内容布局4. table数据展示布局5. footer底部菜单完整项目代码总结欢迎关注 『pyqt5 从0基础开始项目实战』 专栏,持续更新中 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏&am…...
【Python机器学习】——平均中位数模式
Python机器学习——平均中位数模式 文章目录 Python机器学习——平均中位数模式一、Python 平均中位数模式一、Python 平均中位数模式 均值、中值和众数 从一组数字中我们可以学到什么? 在机器学习(和数学)中,通常存在三中我们感兴趣的值: 均值(Mean) - 平均值 中值(M…...
Windows窗口
Windows窗口 Unit01注册窗口类 01窗口类的概念 窗口类是包括了窗口的各种参数信息的数据结构每个窗口都具有窗口类,基于窗口类创建窗口每个窗口都具有一个名称,使用前必须注册到系统 02窗口类的分类 系统窗口类 系统已经定义好的窗口类,…...
Spring Transaction 源码解读
Spring Transaction 规范的maven坐标如下: <dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>...</version></dependency>该包提供了spring事务规范和默认的jta(ja…...
[Netty] Channel和ChannelFuture和ChannelFutureListener (六)
文章目录1.Channel介绍2.ChannelFuture接口介绍3.GenericFutureListener接口介绍1.Channel介绍 NIO的Channel与Netty的Channel 不一样 Netty重新设计了Channel接口,并且给予了很多不同的实现, Channel是Netty网络的抽象类, 除了NIO中Channel所包含的网络I/O操作, 主动建立和关…...
条件渲染
组件经常需要根据不同条件显示不同内容。在React中,你可以使用类似于if语句、&&和?:运算符的JavaScript语法有条件地呈现JSX。你将学到:如何根据条件返回不同的JSX如何有条件地包含或排除一段JSX在React代码库中常见的条件语法快捷方式有条件地…...
springboot(10)异步任务
文章目录1、SpringBoot异步任务1.1使用注解EnableAsync开启异步任务支持1.2使用Async注解标记要进行异步执行的方法1.3controller测试2.异步任务相关限制3.1自定义 Executor3.1.1应用层级:3.1.2方法层级:3.2自定义 Executor (第二种方式)4.1异常处理4.1.…...
清华大学开源的chatGLM-6B部署实战
Windows部署 win10 通过wsl部署 常见问题: torch.cuda.OutOfMemoryError: CUDA out of memory. 在Windows的系统环境变量中增加 变量名:PYTORCH_CUDA_ALLOC_CONF 变量值:max_split_size_mb:32 文档书写时使用3090 24G显存配置,其他规格酌情调整 32 至其他值,如未设置变…...
通过矩阵从整体角度搞懂快速傅里叶变换原理
离散傅里叶变换公式 公式 f[k]∑n0N−1g[n]e−i(2π/N)kn,其中(0<n<N)f[k]\sum_{n0}^{N-1}g[n]e^{-i(2\pi/N)kn}, 其中(0<n<N) f[k]n0∑N−1g[n]e−i(2π/N)kn,其中(0<n<N) 逆变换公式 g[n]1N∑k0N−1f[k]ei(2π/N)kn,其中(0<k<N)g[n]\frac{1}{N}\…...
【C++从0到1】25、C++中嵌套使用循环
C从0到1全系列教程 1、实例代码 #include <iostream> // 包含头文件。 using namespace std; // 指定缺省的命名空间。int main() {// 超女分4个小组,每个小组有3名超女,在控制台显示每个超女的小组编号和组内编号。// 用一个循环…...
FastDFS与Nginx结合搭建文件服务器,并内网穿透实现公网访问
文章目录前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.1 …...
密集场景下的行人跟踪替代算法,头部跟踪算法 | CVPR 2021
一个不知名大学生,江湖人称菜狗 original author: Jacky LiEmail : 3435673055qq.com Time of completion:2023.4.8 Last edited: 2023.4.8 目录 摘要 主要内容 结果 这篇文章是CVPR 2021 的最新论文,文章的标题: 文章的主要内…...
Matlab与ROS(1/2)---服务端和客户端数据通信(五)
0. 简介 在前几讲我们讲了Matlab中的Message以及Topic的相关知识。而ROS主要支持的通信机制还有服务这一类。服务通过允许请求以及响应的通信方式,来给整个系统完成更紧密的耦合。服务客户端向服务服务器发送请求消息并等待响应。服务器将使用请求中的数据构造响应…...
数字化转型的避坑指南:细说数字化转型十二大坑
随着信息技术的快速发展,数字化转型已经成为许多企业发展的必经之路。然而,数字化转型过程中也存在许多坑,如果不谨慎处理,就可能导致企业陷入困境。本文将细说数字化转型的十二大坑,并提供相应的避坑指南。 1、不了解…...
pt05Encapsulationinherit
Encapsulation &inherit 封装继承 封装 向类外提供必要的功能,隐藏实现的细节, 代码可读性更高优势:简化编程,使用者不必了解具体的实现细节,只需要调用对外提供的功能。私有成员:作用:无需向类外提供…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
