Quad Remesher使用教程
为什么要拓扑?
我们知道,模型在三维软件中的表现,是由一系列的面通过不同角度组合而成的。3D模型制作层面上的拓扑,按我的理解来说,就是一个模型的面的结构分布——布线。想表现和制作一个三维模型,有无限种面的组合方式,例如下边的正方体,虽然面的分布不一致,但是外观看起来是完全一样的。
而每一个模型,由于来源不同会有不同的拓扑结构,例如有些是通过工业设计软件,例如ProE、SolidWorks导出来的工业模型,有些是通过扫描之类的逆向工程做出来,还有些是不同三维软件导出来的通用模型格式,如*.obj,*.fbx等。这就出现了一个问题,即使是同一个模型,通过不同方式产生的拓扑结构,有时候会给我们后续的动画制作以及再加工产生一定的麻烦。
重拓扑?
理解了拓扑之后,所谓的重拓扑就很好理解,它就是使用更好的拓扑结构,即更合理的面分布,去重新构建和表现同一个模型。
在对一个模型进行重拓扑的时候,会更注重使用适量的面数和面片大小去表现一个模型,且如果后续需要制作点级别的动画(角色肢体动画、布料等),会更注重构建出一些环状和循环结构,以适应模型的面在挤压和伸展后产生不好的动画效果,如穿模、拉伸过度等。
怎样才算是好的拓扑结构?
首先,一个好的模型应该尽量避免三角面以及超过5条边连接的n-gon面,在重要的位置上尽可能不要出现超过5条边汇集的极点。否则在后续制作点级别动画的时候在这些地方会容易出现面交叉或者不平滑的效果。例如工业软件设计的模型,转换格式后会出现很多三角面,后续如果对这些边缘制作倒角效果或者增加细分会出现比较麻烦的问题。
其次,一个好的模型会有一个比较好的布线走向(edge flow),既方便选取,也可以使后续制作动画时模型有一个好的张力。
一些需要制作动画的位置,如眼睛、嘴巴等,建模时应有合适的结构以及足够的面使其足以支撑动画细节的表现。
重拓扑有哪些好处?
- 好的拓扑结构可以使制作的动画效果更好
结构合理的模型,再受到挤压变形的时候,能呈现出更好的模型效果,如下图,三个不一样拓扑结构的正方体,在扭曲到一定程度后,会出现一些面被撕裂的效果。
- 拓扑结构好的模型,再加工效率会更高
当我们想给模型增加倒角或者增加一些细节的时候,对于拓扑结构好的模型,我们可以很快地对具体某一部分的面做修改,而布线差的模型,我们只能再通过增加修改线的分布来实现细节的增加,对于一些复杂的结构,效率会很低。
- 重拓扑可以使贴图的绘制更加的快捷
对于一些贴图的制作,我们需要进行展UV操作,如果模型的面不同区域密度大小区别很大,又或者既有三角面又有N-gon,会让我们的工作变得非常繁琐,所以重拓扑后的模型能使材质贴图的制作和表现变得更加有效果。
Quad Remesher是一款强大的3D建模工具,它可以帮助你轻松创建高质量的拓扑网格,提高你的建模效率和质量,可以四边形自动重拓扑。
使用方法也非常简单,只需要调节生成的面数、大小和密度,即可直接得到一个布线不错的模型。
下载的模型出现破面,布线凌乱问题,怎么解决?
QuadRemesher for 3dsMax 插件的作用,可以对模型进行重新布线,不管之前模型的布线有多混乱,它都可以一键自动重新布线,而且都是四边面,这在有些情况下非常实用。
QuadRemesher for 3dsMax 插件使用起来也很简单,主要就两个地方,最上方调节网格数量,然后再点击最下面的重建网格,就可以了
使用方法
选择一个需要重新拓扑的模型
打开Quad Remesher插件,设置参数(图中红色框内为两个主要参数)
设置参数的选择:
1、四边形数量:根据模型情况设置合理的面数。
2、四边形大小设置:
a、自适应大小:控制布线的分布,100%时曲率大时会分布更多的布线,平坦的部分会使用较少的布线。0%时布线会平均分布。
b、自适应四边面数量:配合适应大小使用,它会自动增加布线使模型曲率尽量保持不变。
c、使用顶点颜色:对绘制后的部分进行更大的影响,可以通过顶点颜色来控制布线的分布。
d、四边形密度:对顶点绘制产生更大的影响,可以通过调整四边形密度来优化布线。
3、循环边控制:使用默认的“通过角度来检测硬边”就好,开启后能让模型的转折处变硬,关闭后模型的转折处会变软。
4、对称:适合人物模型这样的对称模型,让模型的布线进行对称处理。
点击“重建网格”按钮,显示生成进度,直到完成。箭头处为进度条,右侧按钮可随时取消。
注意:此插件不能撤销,建议先复制一个再进行操作。
相关文章:
Quad Remesher使用教程
为什么要拓扑? 我们知道,模型在三维软件中的表现,是由一系列的面通过不同角度组合而成的。3D模型制作层面上的拓扑,按我的理解来说,就是一个模型的面的结构分布——布线。想表现和制作一个三维模型,有无限…...
【经验分享】容器云运维的知识点
最近忙于备考没关注,有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源,但我以交流、交换为主,笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟,为了避免更多人花没必要的钱,所以决定公…...
NDRCContextUnmarshall断点函数分析之I_RpcBindingCopy函数的作用
NDRCContextUnmarshall断点函数分析之I_RpcBindingCopy函数的作用 第一部分: void RPC_ENTRY NDRCContextUnmarshall ( // process returned context OUT NDR_CCONTEXT PAPI *phCContext,// stub context to update IN RPC_BINDING_HANDLE hRPC, …...
代码随想录算法训练营第三十二天|动态规划理论基础|LC509.肥波那些数|LC70.爬楼梯|LC746.使用最小花费爬楼梯
动态规划理论基础 解释:动态规划,英文:Dynamic Programming,简称DP;如果某一问题有很多重叠子问题,使用动态规划是最有效的。 动态规划五部曲: 1、确定dp数组(dp table)…...
[每周一更]-(第127期):Go新项目-Gin中使用超时中间件实战(11)
在项目不断迭代过程中,发现基础架构中,没有进行超时控制,有些接口由于网络延迟以及远程调用等情况存在请求时间过长的问题,消耗了资源,也降低了用户体验,这一讲我们聊下超时控制中间件,来完善我…...
【HAL库】STM32CubeMX开发----STM32F407----Time定时器中断实验
STM32CubeMX 下载和安装 详细教程 【HAL库】STM32CubeMX开发----STM32F407----目录 前言 本次实验以 STM32F407VET6 芯片为MCU,使用 25MHz 外部时钟源。 实现定时器TIM3中断,每1s进一次中断。 定时器计算公式如下: arr 是自动装载值&#x…...
使用idea创建一个JAVA WEB项目
文章目录 1. javaweb项目简介2. 创建2.1 idea新建项目2.2 选择,命名2.3 打开2.4 选择tomcat运行2.5 结果 3. 总结 1. javaweb项目简介 JavaWeb项目是一种基于Java技术的Web应用程序,主要用于开发动态网页和Web服务。这种项目能够构建在Java技术栈之上&a…...
PDF 文件如何转为 CAD 图纸?PDF2CAD 使用教程
在工程设计和建筑行业中,PDF 文件常常被用来分享和存档图纸。然而,当需要对这些图纸进行编辑或进一步开发时,静态的 PDF 格式就显得力不从心了。这时候,将 PDF 文件转换为可编辑的 CAD(计算机辅助设计)格式…...
Spring Boot 集成 MyBatis 全面讲解
Spring Boot 集成 MyBatis 全面讲解 MyBatis 是一款优秀的持久层框架,与 Spring Boot 集成后可以大大简化开发流程。本文将全面讲解如何在 Spring Boot 中集成 MyBatis,包括环境配置、基础操作、高级功能和最佳实践。 一、MyBatis 简介 1. SqlSession …...
SpringBoot | SpringBoot原理分析
SpringBoot原理分析(一).jpg SpringBoot原理分析(二).jpg 核心要点: 1、SpringBootApplication 2、SpringBootConfiguration 3、ComponentScan 4、EnableAutoConfiguration 5、AutoConfigurationPackages 6、import(Au…...
解决“VMware虚拟机报Intel VT-x”错误
今天,在windows系统上,打开VMware WorkStation v15软件里的虚拟机,弹出"Intel VT-x处于禁用状态"错误,如图(1)所示: 图(1) 虚拟机报"Intel VT-x"错误 问题原因:当前电脑的BIOS没有开启…...
LeetCode200.岛屿数量
题目 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设…...
python学opencv|读取图像(七)抓取像素数据顺利修改图像大小
【1】引言 前序我们已经学习图像的基本读取操作,文章链接为: python学opencv|读取图像-CSDN博客 也掌握了彩色图像的保存: python学opencv|读取图像(二)保存彩色图像_python opencv 读取图像转为彩色-CSDN博客 以…...
Qt Pro 常用配置
Part1: Summary Qt 开发中 Pro 文件的内容很多,需要不断的去学习和使用,现系统性的整理一下。以备录; 1.创建pro文件 1.1 步骤: Qt Creator--->New Project--->应用程序--->Qt Widgets Application--->名称为&…...
源码分析之Openlayers中默认Controls控件渲染原理
概述 Openlayers 中默认的三类控件是Zoom、Rotate和Attribution 源码分析 defaults方法 Openlayers 默认控件的集成封装在defaults方法中,该方法会返回一个Collection的实例,Collection是一个基于数组封装了一些方法,主要涉及到数组项的添…...
银河麒麟桌面操作系统添加WPS字体
【使用场景】 银河麒麟桌面操作系统支持添加WPS字体。在银河麒麟桌面操作系统中使用WPS软件编辑文档时存在需要添加WPS字体的情况,例如字体缺失或者需要特殊字体时,需要添加WPS字体。 【操作方法】 步骤一:在互联网上搜索并下载.ttf格式的字体文件。 步骤二:下载完成后,在…...
利用Python实现多元回归预测汽车价格
引言: AI技术的热门使得大家对机器学习有了更多的关注,作为与AI技术息息相关的一门课程,从头了解基础的机器学习算法就显得十分有必要,如:梯度下降,线性回归等。 正文: 本文将讲解线性回归中多元回回归的案例 机器学习大致可以分为监督学习,非监督学习、半监督学习还…...
16、PyTorch中进行卷积残差模块算子融合
文章目录 1. 1x1卷积核-> 3x3卷积核2. 输入x --> 3x3卷积核,无变化3. 代码 1. 1x1卷积核-> 3x3卷积核 假设我们有一个1x1的卷积核,需要通过填充变为一个3x3的卷积核,实现的是像素之间无关联 [ 4 ] → [ 0 0 0 0 4 0 0 0 0 ] \begin{equation}…...
CMake简单使用(二)
目录 五、scope 作用域5.1 作用域的类型5.1.1 全局作用域5.1.2 目录作用域5.1.3 函数作用域 六、宏6.1 基本语法6.2 演示代码 七、CMake构建项目7.1 全局变量7.2 写入源码路径7.3 调用子目录cmake脚本7.4 CMakeLists 嵌套(最常用) 八、CMake 与库8.1 CMake生成动静态库8.1.1 动…...
React和Vue中暴露子组件的属性和方法给父组件用,并且控制子组件暴露的颗粒度的做法
React 在 React 中,forwardRef 是一种高级技术,它允许你将 ref 从父组件传递到子组件,从而直接访问子组件的 DOM 节点或公开的方法。这对于需要操作子组件内部状态或 DOM 的场景非常有用。为了使子组件能够暴露其属性和方法给父组件…...
MATLAB 识别色块和数量
文章目录 前言步骤 1: 读取图像步骤 2: 转换为 HSV 颜色空间步骤 3: 定义颜色范围步骤 4: 创建颜色掩码步骤 5: 应用形态学操作(可选)步骤 6: 标记和显示结果完整代码步骤七 返回色块坐标 总结 前言 提示:这里可以添加本文要记录的大概内容&…...
.NET 9 已发布,您可以这样升级或更新
.NET 9 已经发布,您可能正在考虑更新您的 ASP.NET Core 应用程序。 我们将介绍更新应用程序所需的内容。从更新 Visual Studio 和下载 .NET SDK 到找出可能破坏应用程序的任何重大更改。 下载 .NET 9 SDK 这些是下载 .NET 9 SDK 所需的步骤。 更新 Visual Studi…...
VMware ubuntu16.04怎么设置静态IP联网
1.将VMware桥接到当前电脑使用的网络上面; 2.点击网络符号,编辑连接; 3.双击有线连接1; 4.选择IPv4设置,将地址,子网掩码,网关,DNS服务器设置好,保存; 5.在终…...
#渗透测试#漏洞挖掘#红蓝攻防#js分析(上)
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
.NET 6.0 中接入 Log4net 和 NLog
一、接入Log4net 1.按日期和大小混合分割日志 nuget包安装 log4net Microsoft.Extensions.Logging.Log4Net.AspNetCore 配置文件 配置文件内容为 <?xml version"1.0" encoding"utf-8"?> <log4net> <!-- Define some output appe…...
linux从frame buffer中将qt界面拷贝出来放到u盘的操作方法
使用的是gsnap工具,源码可以在百度上搜,以Imx6为例的使用方法 rootimx6qsabresd:~# rootimx6qsabresd:~# rootimx6qsabresd:~# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 289293 197510 76423 73% / devtmpfs …...
最新全开源IM即时通讯系统源码(PC+WEB+IOS+Android)部署指南
全开源IM(即时通讯)系统源码部署是一个复杂但系统的过程,涉及多个组件和步骤。以下是一个详细的部署指南,旨在帮助开发者或系统管理员成功部署一个全开源的IM系统,如OpenIM。 IM即时通讯系统源码准备工作 …...
使用Linux的logrotate工具切割日志:Tomcat、NGINX(journal文件清理)
文章目录 引言I Tomcat日志切割配置轮转参数验证码II NGINX访问文件的配置和切割access.log 访问日志的配置使用Linux的logrotate工具切割日志验证文件切割III /run/log/journaljournalctl文件清理引言 journal文件清理: 只保留过去两天,清理之前的文件 journalctl --vacuu…...
shell脚本1
运行脚本 1、先创建一个sh脚本文件,里面输入一个输出网站的命令,比如echo www.baidu.com vim 1.sh2、可以利用以下三种方式、这三种其实不管哪种脚本解释器最后调用的还是这个dash,下面是解释为什么调用都是dash,我们ls可以发现最后目录都是指向了dash…...
Qt-chart 画折线图(以时间为x轴)
上图 代码 #include <iostream> #include <random> #include <qcategoryaxis.h>void MainWindow::testLine() {//1、创建图表视图QChartView* view new QChartView(this);//2.创建图表QChart* chart new QChart();//3.将图表设置给图表视图view->setCh…...
【kubernetes】kubectl get nodes报NotReady
目录 1. 说明2. 问题描述3. kube-flannel.yml 1. 说明 1.这里k8s的版本是v1.17.4。2.若kube-flannel.yml中的镜像拉取不下来,可以下载本文章的文件资源,手动docker load -i ***.tar的方式。3.v1.17.4的kube-flannel.yml参考下面代码。4.通过kubectl get…...
分布式开发学习
1、kratos的特点 gRPC:Kratos 默认支持 gRPC,提供高性能的远程调用能力,适用于微服务间通信。 HTTP :同时支持 HTTP/1.1 和 HTTP/2,方便微服务与外部系统交互。 Protocol Buffers: protoc 工具生…...
软件测试的几种方法详解
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、从是否关心内部结构来看 (1)白盒测试:又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并…...
C语言---int r 与 int r=数的区别
int r 在这里面声明了一个变量r,创建了内存空间 int r 2 声明了一个整数类型的变量r,并给它赋值(初始值)为2,创建内存空间并赋值。...
matlab测试ADC动态性能的原理
目录 摘要: 简介: 动态规范和定义 动态规格: 双面到单边的功率谱转换 摘要: 模数转换器(adc)代表了接收器、测试设备和其他电子设备中的模拟世界和数字世界之间的联系。正如本文系列的第1部分中所概述…...
XDOJ 877 图的深度优先遍历
题目:图的深度优先遍历 问题描述 已知无向图的邻接矩阵,以该矩阵为基础,给出深度优先搜索遍历序列,并且给出该无向图的连通分量的个数。在遍历时,当有多个点可选时,优先选择编号小的顶点。(即…...
内网穿透讲解
什么是内网穿透 内网穿透是一种网络技术,它允许外网或者其他局域网的用户来访问这个局域网的服务器资源,让资源的利用率更高,更加灵活,但是也要确保网络安全。 工作原理 如果你在公司,但是你需要使用到你家里的那台电…...
怎么规划一个呼叫中心大模型呼入部门?设置哪些岗位?
怎么规划一个呼叫中心大模型呼入部门?设置哪些岗位? 原作者:开源呼叫中心FreeIPCC,其Github:https://github.com/lihaiya/freeipcc 规划一个呼叫中心大模型呼入部门是一个复杂而细致的过程,涉及多个层面的…...
企业级Nginx Web服务优化实战(上)
一 ,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说 ,软件的漏洞都和版本有关 ,这个很像汽车的缺陷 ,同一批次的要有问题就 都有问题 ,别的批次可能就都是好的。 因此 ,我们应尽量隐藏或…...
Redisson常用方法
Redisson 参考: 原文链接 定义:Redisson 是一个用于与 Redis 进行交互的 Java 客户端库 优点:很多 1. 入门 1.1 安装 <!--redission--> <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifa…...
【树莓派4B】MindSpore lite 部署demo
一个demo,mindspore lite 部署在树莓派4B ubuntu22.04中,为后续操作开个门! 环境 开发环境:wsl-ubuntu22.04分发版部署环境:树莓派4B,操作系统为ubuntu22.04mindspore lite版本:mindspore-li…...
ESP32-S3模组上跑通ES8388(30)
接前一篇文章:ESP32-S3模组上跑通ES8388(29) 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回终于解析完了es8388_init函数的所有代码。本回回到调用它的地方,继续往下讲解。 我们是从ESP32-S3模组上跑通ES8388(7)-CSDN博客开始进入es8388_init函数,展开对于它的解析的…...
网络安全渗透测试概论
渗透测试,也称为渗透攻击测试是一种通过模拟恶意攻击者的手段来评估计算机系统、网络或应用程序安全性的方法。 目的 旨在主动发现系统中可能存在的安全漏洞、脆弱点以及潜在风险,以便在被真正的恶意攻击者利用之前,及时进行修复和加固&…...
.NET6 WebAPI从基础到进阶--朝夕教育
1、环境准备 1. Visual Studio 2022 2. .NET6 平台支持 3. Internet Information Services 服务器( IIS ) 4. Linux 服务器 【 CentOS 系统】 ( 跨平台部署使用 ) 5. Linux 服务器下的 Docker 容器( Docker 部署使用) …...
opencv通过3种算子进行边缘提取
Scharr算子是效果比较好的,但从肉眼看sobel算子比较顺眼 # 导入OpenCV库,用于图像处理 import cv2 import numpy as np # 从matplotlib库中导入pyplot模块,用于绘制图像 from matplotlib import pyplot as plt # 创建一个名为window的窗口,窗…...
【KodExplorer】可道云KodExplorer-个人网盘安装使用
说明:安装kodExplorer (不是Kodbox);Kodbox需求服务器至少2核4G内存,要求环境具备php/redis/mysql/。安装kodExplorer 就是比较方便简单部署,个人版免费。 一、安装环境需求 服务器: Windows,…...
并查集基础
abstract 并查集(Union-Find Set)是一种数据结构,主要用于处理动态连通性问题(Dynamic Connectivity Problem),例如在图论中判断两点是否属于同一个连通分量,以及动态地合并集合。 它广泛应用…...
FPGA 16 ,Verilog中的位宽:深入理解与应用
目录 前言 一. 位宽的基本概念 二. 位宽的定义方法 1. 使用向量变量定义位宽 ① 向量类型及位宽指定 ② 位宽范围及位索引含义 ③ 存储数据与字节数据 2. 使用常量参数定义位宽 3. 使用宏定义位宽 4. 使用[:][-:]操作符定义位宽 1. 详细解释 : 操作符 -: 操作符 …...
day2 数据结构 结构体的应用
思维导图 小练习: 定义一个数组,用来存放从终端输入的5个学生的信息【学生的信息包含学生的姓名、年纪、性别、成绩】 1>封装函数 录入5个学生信息 2>封装函数 显示学生信息 3>封装函数 删除第几个学生信息,删除后调用显示学…...
原创 传奇996_55——后端如何点击npc隐藏主界面
点击图片退出,举例: |linkexit Img|ax0.5|ay0.5|percentx50|percenty50|imgpublic/touming2.png|hideMain1|linkexit <Img|x0|y0|esc1|show4|bg1|move0|imgcustom/new/longhun/bg.png|loadDelay0|reset1|hideMain1>...