Quixel Mixer学习笔记:软件入门使用

Posted U N Owen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Quixel Mixer学习笔记:软件入门使用相关的知识,希望对你有一定的参考价值。

本随笔用于记录随笔作者在学习使用纹理和材质制作软件Quixel Mixer时学到的知识点,属于入门级别的笔记。本随笔使用的Quixel Mixer版本为2022.1.1 Beta,内容整理自官方手册

随笔作者还处在学习阶段,在软件的使用和理解还不够透彻,难免在技术上或书写上出现问题,如出现类似的问题欢迎在评论区或私信与我讨论。

前言

Quixel Mixer(以下简称Mixer)是一款功能强大且容易上手的纹理绘制软件,软件的操作方法简单,根据官方手册即可掌握软件的全部操作,因此本随笔的主要内容为Mixer强大的蒙版组件介绍和软件特性的使用,不包含基础的软件操作。

蒙版栈(Mask Stack)

蒙版栈(Mask Stack)是添加到图层里面的特殊图层,可以让栈附加的图层根据蒙版栈里面的蒙版设置对当前图层进行遮罩处理,然后再与下一个图层进行混合。在蒙版栈里可以添加多个蒙版组件(Mask Component)蒙版修改器(Mask Modifier),并根据蒙版栈里面的顺序进行应用。Mixer可以为固体(Solid)、表面(Surface)、图集(Atlas)图层和/或组文件夹添加蒙版栈。

蒙版组件(Mask Component)

蒙版组件用于对图层生成蒙版进行遮罩处理,不同的蒙版组件能够提供不同的遮罩效果和可调节的参数。

固体蒙版(Solid Mask)

固体蒙版(Solid)会调节图层的透明度,就像图层的透明度(Opacity)属性一样。

纹理贴图蒙版(Texture Map Mask)

纹理贴图蒙版(Texture Map Mask)允许用户指定已经存在与Mixer软件或外部软件的贴图作为蒙版纹理。该组件可以选择如下几种方式导入纹理贴图:

  1. 自定义贴图(Custom Map):允许选择外部存在的图片作为蒙版纹理。
  2. 图层贴图(Layer Map):选择当前图层栈里存在贴图的指定通道(如Albedo、Roughness等)作为蒙版纹理,
  3. 库资产(Library Asset):可以选择库里存在的资产作为蒙版纹理。
  4. 基础贴图(Base Map):可以选择用户导入到纹理集编辑器(Texture Sets Editor)的基础贴图作为蒙版纹理。

噪点蒙版(Noise Mask)

噪点蒙版(Noise Mask)会程序化生成噪点供图层使用。当前有如下五种噪点类型可供选择:

  1. 单一噪点(Simple Noise):普通的噪点类型。
  2. 柏林噪点(Perlin Noise):可以生成柏林噪点,用于云朵、山脉这一类“有规律的随机”。
  3. 细胞噪点1(Worley Noise 1):可以生成犹如细胞壁一样的噪点,该类型的噪点会以方形进行排布。
  4. 细胞噪点2(Worley Noise 2):可以生成犹如细胞壁一样的噪点,该类型的噪点会以圆形进行排布。
  5. 细胞噪点3(Worley Noise 3):可以生成犹如细胞壁一样的噪点,该类型的噪点大部分会以圆形进行排布,然后在一些边缘位置生成锐利的形状。

图案蒙版(Pattern Mask)

图案蒙版(Pattern Mask)会程序化生成方形(Square)、圆形(Circle)、棋盘形(Checker)和梯度(Gradient)蒙版。
使用梯度蒙版的时候需要注意该梯度蒙版不会使用底层模型的法线和高度数据,因此该蒙版适合于平面和平铺纹理,但不适合于3D模型。要想适用于3D模型的话可以用位置渐变蒙版(Position Gradient)

法线蒙版(Normal Mask)

法线蒙版(Normal Mask)会使用模型和/或图层的法线作为生成蒙版的依据。使用该组件可以实现法线驱动的效果,如仅仅只在岩石的上表面生成苔藓。
该组件提供四种法线可供使用:

  1. 模型 & 下层图层(Mesh & Underlaying Mix):组件会使用基础网格体模型和下层图层的纹理来生成蒙版。
  2. 模型 & 当前层(Mesh & Current Layer):组件会使用基础网格体模型和当前层的纹理来生成蒙版。需要注意的是如果当前层是没有高度信息的固体层,那么曲率组件只会获取到模型的信息并生成曲率蒙版。
  3. 模型 & 基础法线贴图(Mesh & Base Normal Map):组件会使用基础网格体模型和导入到纹理集编辑器里的基础法线来生成蒙版。
  4. 仅模型(Only Mesh):组件会使用基础网格体模型的信息来生成蒙版而不会使用任何纹理信息。

曲率蒙版(Curvature Mask)

曲率蒙版(Curvature)可以计算出3D模型中哪些部分具有较大的弯曲度,根据不同弯曲度生成蒙版,从而实现类似“物体边缘生锈”或“物体凹槽处生成青苔”这类效果。曲率蒙版可以选择四种曲率类型:

  1. 默认曲率(Default Curvature):默认曲率类型。基于网格体模型和法线数据生成模型的边缘和凹点,其中较亮的像素是峰顶和边缘,较暗的区域是缝隙和凹点,中灰色属于平坦、开阔的区域。一般来说该类型的曲率蒙版和模型烘焙出来的曲率贴图很相似。
  2. 仅限边缘(Edges Only):仅生成峰顶和边缘的像素。
  3. 仅限凹点(Cavities Only):仅生成缝隙和凹点的像素。
  4. 边缘和凹点(Edges & Cavities):仅生成峰顶、边缘和缝隙、凹点的像素。

位置渐变蒙板(Position Gradient Mask)

位置渐变蒙版(Position Gradient Mask)利用置换贴图和法线方向生成渐变蒙版。使用该组件可以实现在颜色和颜色之间进行平滑过渡的效果。

蒙版修改器(Mask Modifier)

蒙版修改器(Mask Modifier)提供额外参数对蒙版组件生成的蒙版执行进一步的处理。修改器会作用于全部的下层蒙版组件,除非它是一个附加到了蒙版组件上的修改器。如果蒙版栈里面没有任何蒙版组件的话蒙版修改器不会产生任何效果。

亮度/对比度(Brightness/Contrast)

亮度/对比度(Brightness/Contrast)修改器可以修改蒙版组件的整体亮度和蒙版的对比度。

限制(Clamp)

限制(Clamp)修改器可以将蒙版组件生成的蒙版像素值限制在一个范围里面。

反转(Invert)

反转(Invert)修改器可以将蒙版组件生成的蒙版像素值反转,即用1减去每个像素值。

归一化(Normalize)

归一化(Normalize)修改器会将蒙版组件生成的蒙版像素值归一化,即映射到[0,1]的范围。

渐变重映射(Gradient Remap)

渐变重映射(Gradient Remap)会根据已有的蒙版信息(噪点蒙版、渐变蒙版等)生成修改器属性提供的更高级的蒙版。
渐变重映射修改器提供的范围(Range)属性可以修改蒙版的明暗信息,让明亮的地方更亮且范围更大,也能让黑暗的地方更暗范围也更大,这样的话很容易生成金属器具上剥落破损的漆面或生锈效果。

色调分离(Posterize)

色调分离(Posterize)修改器可以将一个具有连续色调的区域转换成几个单一色调的区域,适合用来做风格化、卡通化的纹理。
属性“阶梯数(Step Count)”在默认情况下且最低为2,这个时候是蒙版色调最分明的时候,也就是将蒙版直接划分成为了黑和白两种色调而没有灰色色调,提升阶梯数则可以让色调进行一个过渡。

模糊(Blur)

模糊(Blur)修改器可以模糊蒙版。模糊修改器提供两种方法进行模糊操作:高斯模糊(Gaussian Blur)和径向模糊(Directional Blur)
模糊修改器的一个适用方法是能够模糊一些较硬边缘的蒙版,使其能够与下层纹理很合进行混合而不出现硬接缝。

倒角(Bevel)

倒角(Bevel)修改器允许蒙版生成“斜坡”,即灰度梯度值。

圆形变换(Circular Transform)

圆形变换(Circular Transform)修改器会根据原来蒙版的样式生成一个原蒙版组合而成的“圆形图案蒙版”,并且可以根据参数设置原蒙版的个数、角度等信息,从而生成类似“漩涡”一样的蒙版。
圆形变换修改器适合用于生成徽章、圆形砖块的基于“圆形”的纹理。

散布(Scatter)

散布(Scatter)修改器会根据原来蒙版的样式生成粒子形态、散布到平面上的蒙版。散布一共可以选择两种类型:

  1. 随机(Random):让原蒙版像落叶堆积到地面那样随机在平面上进行散布。
  2. 网格状(Grid):让原蒙版像网格状一样分布在平面上。
    无论是哪一种散布方式,我们都可以设置散布时原蒙版的大小范围、旋转范围来实现随机的效果。

投影(Projection)

投影(Projectile)修改器用于设置如何将下层蒙版投影到模型上。
投影修改器的作用和图层属性“放置(Placement)”的作用一样。

材质ID蒙版(Material ID Mask)

材质ID蒙版(Material ID Mask)允许用户导入材质ID贴图,根据材质ID蒙版选择的颜色来进行图层遮罩。

绘制蒙版(Paint Mask)

绘制蒙版(Paint Mask)允许用户通过软件自带的笔刷工具在模型上绘制要遮罩的部分。

混合模式(Blend Modes)

普通(Normal)

默认的混合模式。即直接显示混合后(当前层)的纹理,以下步骤都是混合后还要进行一步额外处理的操作。

相加(Add)

用下层的像素值与当前层的像素值相加。

相减(Subtract)

用下层的像素值减去当前层的像素值。

相乘(Multiply)

用下层的像素值与当前层的像素值相乘。

相除(Divide)

用下层的像素值除以当前层的像素值。需要注意的是如果当前层的像素值为0,也就是0/当前层像素,那么相除的结果为1;如果下层的像素值为0,那么当前层的像素值无论为什么值(哪怕是0),那么相除的结果为0;如果当前层和下层的像素都不为0的话,那么相除的结果为下层的像素值。

差异(Difference)

类似相减混合模式,但是不会受到上下层级的影响,而是用图层中较大的值减去较小的值,如果两个图层的像素值一样,那么混合结果为0。

最大(Max)

保留两个图层中值较大的像素值。如果像素值相等则不会执行任何操作。

最小(Min)

保留两个图层中值较小的像素值。如果像素值相等则不会执行任何操作。

步进(Step)

如果当前层像素值比下层像素值大,那么混合结果为1;如果比小,则混合结果为0。

重叠(Overlay)

如果下层像素值比当前层像素值小,那么会让下层像素值自乘作为混合结果;其他情况下会让下层像素值先翻转,然后自乘,然后再翻转。该混合模式实现的结果会让黑暗的地方更黑暗,明亮的地方更明亮。

失真(Distort)

该混合模式仅在当前层为噪点蒙版的时候启用。会让下层的蒙版根据当前层的噪点蒙版产生失真效果。

附加(Clipping)

在图层栈里面用鼠标指向某个图层之后,使用组合键Alt + LMB,就可以让指定的图层附加到下一图层上(如果没有下一图层则无法附加)从而形成父子关系——附加图层为子图层,而被附加图层为父图层。图层附加会优先被混合,最后混合的结果才会进入到剩余图层栈的混合。该附加功能也适用于蒙版栈。

U象限(UDIM,待补充)

部分快捷键

Alt + 鼠标左键:当鼠标指向图层或蒙版层的时候,会把该层附加到下层。当鼠标在视口的时候会旋转模型。
T:开启平铺功能。
0:在视口浏览当前激活的蒙版组件。
9:在视口浏览当前图层的蒙版栈。
8:在视口浏览当前模型的材质ID。
P:在视口切换3D浏览和2D浏览。
Q:当激活的是图层的时候,按下Q键并使用鼠标左键会启用吸管功能为图层的Albedo选择颜色,松开Q键则取消选择。当激活材质ID蒙版的时候,则是快速选择材质ID。
K:为激活的图层快速添加蒙版栈。
I:为激活的图层快速添加材质ID蒙版。
N:为激活的图层快速添加绘制蒙版。
Alt + N:为激活的图层快速添加全黑的绘制蒙版。
Space:在最大化视口和当前窗口之间进行切换。
B:在绘制图层里选择笔刷。
E:在绘制图层里选择橡皮擦。
S + 鼠标中键 + 拖拽:在绘制图层里修改笔刷大小。
A + 鼠标中键 + 拖拽:在绘制图层里修改笔刷方向。
O + 鼠标中键 + 拖拽:在绘制图层里修改笔刷透明度。
F + 鼠标中键 + 拖拽:在绘制图层里修改笔刷流度。
Shift + 鼠标左键:连接到最后一次绘制的位置(从而生成一条连线笔画)
Shift + 鼠标左键 + 拖拽:仅能用于平面模型。对齐平面绘制水平或垂直笔画。
Shift + S + 鼠标左键 + 拖拽:仅能用于平面模型。对齐视口绘制水平或垂直笔画。

软件测试学习笔记:Junit入门

软件测试的第一次上机课上,第一次使用JUint对项目进行测试。

安装是最开始要进行的工作,JUint的安装是比较容易的,只需将需要的jar包引入到项目中即可

最开始的Triangle代码如下:

package com.tju.scs;

public class Triangle {
    int a, b, c;
    public Triangle(){
        a = 0;
        b = 0;
        c = 0;
    }
    public Triangle(int a, int b, int c){
        if(a > b)
        {
            int temp = a;
            a = b;
            b = temp;
        }
        if(a > c)
        {
            int temp = a;
            a = c;
            c = temp;
        }
        if(b > c)
        {
            int temp = c;
            c = b;
            b = temp;
        }
        
        this.a = a;
        this.b = b;
        this.c = c;
    }
    int test(){
        int x = 0;
        if(a + b < c || a <=0 || b <= 0 || c <= 0)
            x = 0;
        else if(a == b && b == c)
        {
            x = 1;
        }
        else if(a == b || b == c)
        {
            x = 2;
        }
        else
            x = 3;
        return x;
    }
    int legal(){
        if(this.test() != 0)
            return 1;
        else
            return 0;
    }
    int isoscelesTriangle()
    {
        if(this.test() == 1 || this.test() == 2)
            return 1;
        else
            return 0;
    }
    int equilateralTriangle()
    {
        if(this.test() == 1)
            return 1;
        else
            return 0;
    }
    int normalTriangle()
    {
        if(this.test() == 3)
            return 1;
        else
            return 0;
    }
}

Junit生成的单元测试代码如下

package com.tju.scs;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class TriangleTest {
    
    Triangle tr = null;
    @Before
    public void setUp() throws Exception {
        int a = 0;
        int b = 0;
        int c = 0;
        tr = new Triangle(a, b, c);
    }

    @Test
    public void testLegal() {
        assertEquals(0, tr.legal());
    }

    @Test
    public void testIsoscelesTriangle() {
        assertEquals(0, tr.isoscelesTriangle());
    }

    @Test
    public void testEquilateralTriangle() {
        assertEquals(0, tr.equilateralTriangle());
    }

    @Test
    public void testNormalTriangle() {
        assertEquals(0, tr.normalTriangle());
    }

}

用 a = 0, b = 0, c = 0 作为三边后,上述测试代码结果如下:

技术分享

即此三角形不合法,非等腰,非等边,非普通三角形。  

 

技术分享

以上是关于Quixel Mixer学习笔记:软件入门使用的主要内容,如果未能解决你的问题,请参考以下文章

软件测试学习笔记:Junit入门

quixel bridge无法安装UE4材质插件?

R语言入门学习笔记 - 对R软件的认识

ARM学习笔记一 入门篇

江科大51单片机入门学习笔记合集

HTML入门学习笔记