• 体积感光束教程

    • 概述
    • 教程内容
    • LightBeams
      • 创建静态网格物体
      • 创建材质
        • FalloffTexture
        • 设置材质
          • 修复失真问题

            • 查看 Underneath 中显示有问题的地方
            • 相机交叉
            • 世界对象相交光束
          • 最后加工
            • 摇拍烟雾
            • 其他参数
    • 最后总结

概述


设计该指南的目的是作为一个供创建令人信服的体积感光束使用的材质技术简介使用。我们会使用一个应用于锥形的静态网格物体的不带光照半透明物体材质,使用衰减隐藏边缘。

这些年来,游戏引擎一直使用类似的技术仿造体积感光束的外观,但是最常见的技术是存在严重缺陷的。 您如何才能制作一个从各个角度看都是正确的仿造光束? 玩家穿过光束会怎么样? 光束与世界几何体相交会怎么样? 通过一些功能强大的材质表达式的帮助,虚幻引擎 3 可以轻松解决所有这些问题 - 并且会进行一些调整。

教程内容


该教程会重新创建在 EngineVolumetrics(引擎体积感)包中发现的 Master Lightbeam(主要光束)材质。

已经完成的材质的全名是: \\Build\UnrealEngine3-Build\Engine\Content\EngineVolumetrics.LightBeam.Materials.M_EV_Lightbeam_Master_01

还要注意: \\Build\UnrealEngine3-Build\Engine\Content\EngineVolumetrics.LightBeam.Materials.M_EV_Lightbeam_Master_01_1sided_01 应该在不需要看到光束的内部时使用。最终,由于性能原因我们最常使用的是单面的版本。

EngineVolumetrics 是一个包含四个组的包,这四个组可以包含四个体积类型。FalloffSpheres、FogEnvironments、Fogsheets 和 Lightbeams。在所有这些体积图元类型中,选择 lightbeam 作为教程材质,因为它将所有这些类型的大多数技术结合到了一个材质中。说明各种体积图元类型以及如何使用它们的页面是体积感光束指南。

由于该材质被用作为很多实例的父代材质,所以该教程也会向您说明如何使用参数配置材质作为实例。为了获取完整的说明材质实例,请参阅实例化的材质页面。

LightBeams


可以创建无限种可能性,但是我们会从一个简单的圆锥形衰减类型光束开始创建。这些可以通过很多不同的方式使用;它们可以是光源发出的很小并且微弱的光,或者缩放到像从云层缝隙中发出的那种太阳光束那样的光。它们应该符合关卡现有气氛;具有厚雾效果的关卡应该使用比晴空关卡更厚的光束。当然,这完全取决于美术人员的心情。

需要三个步骤创建这些光束。 1) 创建会定义光束的形状的 Static Mesh(静态网格物体)。 2) 创建衰减贴图。 3) 创建 Material(材质)并调整值直到所有失真现象消失。

创建静态网格物体

EngineVolumetrics 包已经有三个不同角度的锥形变体,但是它们都有相同的 UV。这部分将会向您说明为了制作更多要使用该材质的自定义锥形网格物体您需要做哪些操作。

创建一个边锥形化的圆柱并将其展开,这样在 UV 中就只有一条光束。由于材质计算在切线空间中进行,有一个整洁的 UV 这一点非常重要,而不整洁的 UV 可能会导致以后的视频扭曲。您的网格物体细分的越多,最终结果的衰减系数越平滑(16 面的圆柱分成 4 个垂直切片效果会很好)。

这三个已经在 EngineVolumetrics 中的锥形变体应该足以应付大多数情况。

创建材质

材质创建是流程中最棘手的部分。首先,我们会获取最基础等级的光束功能,然后我们会一次一个地解决每一个失真问题。

FalloffTexture

首先,我们需要创建一个衰减贴图。衰减贴图的外观是形成最终结果的外观的主要原因。已经在 Photoshop 中使用 Render(渲染)->Light Effects(光效)过滤创建完整的衰减贴图。在顶部描绘了一条模糊的黑色线。

\\Build\UnrealEngine3-Build\Engine\Content\EngineVolumetrics.LightBeam.Materials. T_EV_LightBeam_Falloff_01

要记录下来的重要质量是贴图所有边周围完全是黑色,而且贴图的顶部是渐渐变为黑色。这可以帮助隐藏 Static Mesh(静态网格物体)的顶部边的位置。请确保将该贴图属性设置为 Clamp(固定)。在该材质中它的贴图样本将会是 TextureSample2DParameter,这样您就可以在您的光束上使用各种不同的衰减贴图。

设置材质

现在,我们准备开始创建材质。创建一个新的材质并在材质设置中设置以下选项:

BlendMode: BLEND_Translucent LightModel: MLM_Unlit TwoSided: True

我们只会使用到两个材质输入字段: Emissive(自发光)和 Opacity(不透明)。自发光字段应该只包含光束的颜色信息。目前,将一个简单的 VectorParameter (1, 1, 1, 1) 用于自发光。VectorParameter 的 Alpha 通道通过 RGB 进行控制。它可以让您使用 Alpha 修改 Brightness(亮度),这样您就可以使用颜色选取器选择 RGB 值(它只支持小于 1 的值),而且如果您愿意,仍然可以使光束随意发散。可以更改颜色的照明独立这一功能通常很有用。

不透明字段是大多数魔法发生的地方。它会处理光束的衰减而且会包含贴图信息来添加灰尘或滚动的烟雾。

我们会使用如上不透明所示的衰减贴图。对于衰减贴图的贴图坐标,我们会使用 Reflection Vector(反射向量)生成 X 分量,而 Y 分量由 Static Mesh(静态网格物体)的 UV 提供。这会使贴图沿着 X 轴面向相机的方向,相对于静态网格物体旋转。生成 X 分量需要一番工夫。

反射向量输出数字的范围是从 -1 到 1。由于我们将要使用结果作为贴图坐标,所以我们希望数字范围是 0-1。. 我们只需通过乘以 0.5 然后再加上 0.5 就可以将 Reflection(反射)向量的范围变为 0-1。

只要范围是正确的,AppendVector 表达式会在 Static Mesh(静态网格物体)的 UV 中将我们的 Generated X 坐标与 Y 坐标组合。这个 AppendVector 的输出即可将 UV 提供给我们的 FalloffTexture

我们的光束现在的样子如下所示:

虽然这是一个很好的初始点,但是我们的光束材质绝不可能完成。看一看我们可以引入到场景中的失真:

正像我在该指南的简介中提到的一样,这些问题中每一个都可以通过使用合适的材质表达式解决。

修复失真问题
查看 Underneath 中显示有问题的地方

我们现在正在使用的方法(仅限于 X 通道衰减)可以使我们的光束在从侧面浏览时看上去很强烈,但是从底部角中浏览光束时会有点帮助。要修正从底部浏览时光束显示的方式,我们将会使用另一个衰减贴图,并将其与我们现有的衰减贴图相乘。我将一个模糊点作为第二个衰减贴图使用。

请确保将该贴图属性设置为 Clamp(固定)。

和以前很相像,我们使用反射向量生成第二个衰减贴图的贴图坐标。对于该贴图的贴图坐标,我们将会使用���射向量中的 X 和 Y 分量。ReflectionVector(X,Y) 会乘以一个常量对其进行少量调整更好地隐藏这些边。我使用的是 0.3,也可以使用其他值。

从底部浏览时光束的样子应该如下所示:

硬边应该不再可见。如果您还可以看到硬边,您只需调整衰减贴图或 ReflectionVector(X,Y) 的乘数。

相机交叉

使用 PixelDepth 节点,我们可以取样半透明材质中任何像素的深度。我们会使用它逐渐减弱这个立即在相机前面的像素。我们可以通过将深度与一个常量相乘控制发生逐渐减弱的距离。对于常量,使用名为‘Distance(距离)’的标量参数,这样可以根据实例更改它。通常情况下,您会希望根据您放置的光束的大小更改这个值。很大的光束应该从更远一点的地方逐渐减弱,而小光束可以使相机在开始逐渐减弱之前靠得很近。合适的默认值是 0.005。

将该结果限定为其中一个最大值,这一点很重要。只需乘以以前的衰减贴图结果。

在距离前后都已经使用了淡入淡出:

世界对象相交光束

我们可以使用 DepthBiasedAlpha 根据与世界几何体的交集淡入淡出光束。

添加 DepthBiasedBlendAlpha 节点并将它的 BiasScale 设置为 500 的近似值。一个名为‘Density(目标)’的标量参数用于节点的 Bias(偏移)输入中,允许通过材质实例进一步调整偏移的深度。

由于该材质被认为是实例的父代,而且 depthbiasedalpha 是一个相当昂贵的表达式,所以我们会为它提供 StaticSwitchParameter,这样就可以切换它的开关。对它进行设置,它的默认值是 OFF(关闭)。

虽然 DepthBiasedAlpha 技术并不完美(它不会使光束的阴影具有体积感),但是它可以出色地完成删除场景中的明显失真现象这项工作。

最后加工
摇拍烟雾

我们有人会使用 StaticSwitchParameter 提供可以在光束中启用摇拍的烟雾贴图的选项。如果您制作了其他光束网格物体,那么应该会从 0 到 1 整齐地按照圆柱展开 UV,这样烟雾贴图就可以在平铺显示的地方没有接缝的情况下进行摇拍。

添加了一个贴图参数。它有几个其他参数可以控制它的行为。由于光束常常会根据它们的长度进行缩放,所以这个贴图 X 和 Y 刻度有单独的参数。它还有用于控制摇拍速度和对比度的参数。

有以下参数: TextureContrast: 使用常量 1 线性插入这个贴图。 TextureScaleX: X 轴上的刻度 TextureScaleY: Y 轴上的刻度 PanningSpeed: 乘以时间控制摇拍速度。

下面是一个屏幕截图:

其他参数

最后,我们会添加一个其他乘数和一个名为“Opacity(不透明)”的 Scalar Parameter(标量参数)以便将光束的不透明最终控制权限授予材质实例。

最后总结


这就是最后材质的样子。使用 21 个指令时,该光束消耗的性能比大多数带光照的材质小很多。打开 UseDepthBiasedAlpha 和 UseTextureOverlay 会使指令增加到 39,所以使用这些 StaticSwitchParameters 很明智。

在重视下一代引擎的光照功能的同时,不要低估无光照材质的功能也很重要。


  • 体积感光束教程

    • 概述
    • 教程内容
    • LightBeams
      • 创建静态网格物体
      • 创建材质
        • FalloffTexture
        • 设置材质
          • 修复失真问题

            • 查看 Underneath 中显示有问题的地方
            • 相机交叉
            • 世界对象相交光束
          • 最后加工
            • 摇拍烟雾
            • 其他参数
    • 最后总结

概述


设计该指南的目的是作为一个供创建令人信服的体积感光束使用的材质技术简介使用。我们会使用一个应用于锥形的静态网格物体的不带光照半透明物体材质,使用衰减隐藏边缘。

这些年来,游戏引擎一直使用类似的技术仿造体积感光束的外观,但是最常见的技术是存在严重缺陷的。 您如何才能制作一个从各个角度看都是正确的仿造光束? 玩家穿过光束会怎么样? 光束与世界几何体相交会怎么样? 通过一些功能强大的材质表达式的帮助,虚幻引擎 3 可以轻松解决所有这些问题 - 并且会进行一些调整。

教程内容


该教程会重新创建在 EngineVolumetrics(引擎体积感)包中发现的 Master Lightbeam(主要光束)材质。

已经完成的材质的全名是: \\Build\UnrealEngine3-Build\Engine\Content\EngineVolumetrics.LightBeam.Materials.M_EV_Lightbeam_Master_01

还要注意: \\Build\UnrealEngine3-Build\Engine\Content\EngineVolumetrics.LightBeam.Materials.M_EV_Lightbeam_Master_01_1sided_01 应该在不需要看到光束的内部时使用。最终,由于性能原因我们最常使用的是单面的版本。

EngineVolumetrics 是一个包含四个组的包,这四个组可以包含四个体积类型。FalloffSpheres、FogEnvironments、Fogsheets 和 Lightbeams。在所有这些体积图元类型中,选择 lightbeam 作为教程材质,因为它将所有这些类型的大多数技术结合到了一个材质中。说明各种体积图元类型以及如何使用它们的页面是体积感光束指南。

由于该材质被用作为很多实例的父代材质,所以该教程也会向您说明如何使用参数配置材质作为实例。为了获取完整的说明材质实例,请参阅实例化的材质页面。

LightBeams


可以创建无限种可能性,但是我们会从一个简单的圆锥形衰减类型光束开始创建。这些可以通过很多不同的方式使用;它们可以是光源发出的很小并且微弱的光,或者缩放到像从云层缝隙中发出的那种太阳光束那样的光。它们应该符合关卡现有气氛;具有厚雾效果的关卡应该使用比晴空关卡更厚的光束。当然,这完全取决于美术人员的心情。

需要三个步骤创建这些光束。 1) 创建会定义光束的形状的 Static Mesh(静态网格物体)。 2) 创建衰减贴图。 3) 创建 Material(材质)并调整值直到所有失真现象消失。

创建静态网格物体

EngineVolumetrics 包已经有三个不同角度的锥形变体,但是它们都有相同的 UV。这部分将会向您说明为了制作更多要使用该材质的自定义锥形网格物体您需要做哪些操作。

创建一个边锥形化的圆柱并将其展开,这样在 UV 中就只有一条光束。由于材质计算在切线空间中进行,有一个整洁的 UV 这一点非常重要,而不整洁的 UV 可能会导致以后的视频扭曲。您的网格物体细分的越多,最终结果的衰减系数越平滑(16 面的圆柱分成 4 个垂直切片效果会很好)。

这三个已经在 EngineVolumetrics 中的锥形变体应该足以应付大多数情况。

创建材质

材质创建是流程中最棘手的部分。首先,我们会获取最基础等级的光束功能,然后我们会一次一个地解决每一个失真问题。

FalloffTexture

首先,我们需要创建一个衰减贴图。衰减贴图的外观是形成最终结果的外观的主要原因。已经在 Photoshop 中使用 Render(渲染)->Light Effects(光效)过滤创建完整的衰减贴图。在顶部描绘了一条模糊的黑色线。

\\Build\UnrealEngine3-Build\Engine\Content\EngineVolumetrics.LightBeam.Materials. T_EV_LightBeam_Falloff_01

要记录下来的重要质量是贴图所有边周围完全是黑色,而且贴图的顶部是渐渐变为黑色。这可以帮助隐藏 Static Mesh(静态网格物体)的顶部边的位置。请确保将该贴图属性设置为 Clamp(固定)。在该材质中它的贴图样本将会是 TextureSample2DParameter,这样您就可以在您的光束上使用各种不同的衰减贴图。

设置材质

现在,我们准备开始创建材质。创建一个新的材质并在材质设置中设置以下选项:

BlendMode: BLEND_Translucent LightModel: MLM_Unlit TwoSided: True

我们只会使用到两个材质输入字段: Emissive(自发光)和 Opacity(不透明)。自发光字段应该只包含光束的颜色信息。目前,将一个简单的 VectorParameter (1, 1, 1, 1) 用于自发光。VectorParameter 的 Alpha 通道通过 RGB 进行控制。它可以让您使用 Alpha 修改 Brightness(亮度),这样您就可以使用颜色选取器选择 RGB 值(它只支持小于 1 的值),而且如果您愿意,仍然可以使光束随意发散。可以更改颜色的照明独立这一功能通常很有用。

不透明字段是大多数魔法发生的地方。它会处理光束的衰减而且会包含贴图信息来添加灰尘或滚动的烟雾。

我们会使用如上不透明所示的衰减贴图。对于衰减贴图的贴图坐标,我们会使用 Reflection Vector(反射向量)生成 X 分量,而 Y 分量由 Static Mesh(静态网格物体)的 UV 提供。这会使贴图沿着 X 轴面向相机的方向,相对于静态网格物体旋转。生成 X 分量需要一番工夫。

反射向量输出数字的范围是从 -1 到 1。由于我们将要使用结果作为贴图坐标,所以我们希望数字范围是 0-1。. 我们只需通过乘以 0.5 然后再加上 0.5 就可以将 Reflection(反射)向量的范围变为 0-1。

只要范围是正确的,AppendVector 表达式会在 Static Mesh(静态网格物体)的 UV 中将我们的 Generated X 坐标与 Y 坐标组合。这个 AppendVector 的输出即可将 UV 提供给我们的 FalloffTexture

我们的光束现在的样子如下所示:

虽然这是一个很好的初始点,但是我们的光束材质绝不可能完成。看一看我们可以引入到场景中的失真:

正像我在该指南的简介中提到的一样,这些问题中每一个都可以通过使用合适的材质表达式解决。

修复失真问题
查看 Underneath 中显示有问题的地方

我们现在正在使用的方法(仅限于 X 通道衰减)可以使我们的光束在从侧面浏览时看上去很强烈,但是从底部角中浏览光束时会有点帮助。要修正从底部浏览时光束显示的方式,我们将会使用另一个衰减贴图,并将其与我们现有的衰减贴图相乘。我将一个模糊点作为第二个衰减贴图使用。

请确保将该贴图属性设置为 Clamp(固定)。

和以前很相像,我们使用反射向量生成第二个衰减贴图的贴图坐标。对于该贴图的贴图坐标,我们将会使用���射向量中的 X 和 Y 分量。ReflectionVector(X,Y) 会乘以一个常量对其进行少量调整更好地隐藏这些边。我使用的是 0.3,也可以使用其他值。

从底部浏览时光束的样子应该如下所示:

硬边应该不再可见。如果您还可以看到硬边,您只需调整衰减贴图或 ReflectionVector(X,Y) 的乘数。

相机交叉

使用 PixelDepth 节点,我们可以取样半透明材质中任何像素的深度。我们会使用它逐渐减弱这个立即在相机前面的像素。我们可以通过将深度与一个常量相乘控制发生逐渐减弱的距离。对于常量,使用名为‘Distance(距离)’的标量参数,这样可以根据实例更改它。通常情况下,您会希望根据您放置的光束的大小更改这个值。很大的光束应该从更远一点的地方逐渐减弱,而小光束可以使相机在开始逐渐减弱之前靠得很近。合适的默认值是 0.005。

将该结果限定为其中一个最大值,这一点很重要。只需乘以以前的衰减贴图结果。

在距离前后都已经使用了淡入淡出:

世界对象相交光束

我们可以使用 DepthBiasedAlpha 根据与世界几何体的交集淡入淡出光束。

添加 DepthBiasedBlendAlpha 节点并将它的 BiasScale 设置为 500 的近似值。一个名为‘Density(目标)’的标量参数用于节点的 Bias(偏移)输入中,允许通过材质实例进一步调整偏移的深度。

由于该材质被认为是实例的父代,而且 depthbiasedalpha 是一个相当昂贵的表达式,所以我们会为它提供 StaticSwitchParameter,这样就可以切换它的开关。对它进行设置,它的默认值是 OFF(关闭)。

虽然 DepthBiasedAlpha 技术并不完美(它不会使光束的阴影具有体积感),但是它可以出色地完成删除场景中的明显失真现象这项工作。

最后加工
摇拍烟雾

我们有人会使用 StaticSwitchParameter 提供可以在光束中启用摇拍的烟雾贴图的选项。如果您制作了其他光束网格物体,那么应该会从 0 到 1 整齐地按照圆柱展开 UV,这样烟雾贴图就可以在平铺显示的地方没有接缝的情况下进行摇拍。

添加了一个贴图参数。它有几个其他参数可以控制它的行为。由于光束常常会根据它们的长度进行缩放,所以这个贴图 X 和 Y 刻度有单独的参数。它还有用于控制摇拍速度和对比度的参数。

有以下参数: TextureContrast: 使用常量 1 线性插入这个贴图。 TextureScaleX: X 轴上的刻度 TextureScaleY: Y 轴上的刻度 PanningSpeed: 乘以时间控制摇拍速度。

下面是一个屏幕截图:

其他参数

最后,我们会添加一个其他乘数和一个名为“Opacity(不透明)”的 Scalar Parameter(标量参数)以便将光束的不透明最终控制权限授予材质实例。

最后总结


这就是最后材质的样子。使用 21 个指令时,该光束消耗的性能比大多数带光照的材质小很多。打开 UseDepthBiasedAlpha 和 UseTextureOverlay 会使指令增加到 39,所以使用这些 StaticSwitchParameters 很明智。

在重视下一代引擎的光照功能的同时,不要低估无光照材质的功能也很重要。

UE3 体积感光束教程相关推荐

  1. 画色彩如何画出体积感

    本文由"学美术上美术集网校"原创,图片素材来自网络,仅供学习分享 画色彩如何画出体积感?大家在练习色彩的时候是不是也曾出现过这种问题?明明画了很多,但是画面就是出不来体积和空间.这 ...

  2. 静物素描如何“鼓”起来,画出体积感?

    静物素描怎么画?素描怎么画的鼓起来,并且画出体积感?很多小伙伴在学习美术素描的时候都会遇到各种问题今天美术加带大家了解下静物素描的画法: 首先,静物素描怎么才能画出体积感: 1. 理解形体,有形才有体 ...

  3. 2D动画如何做出3D体积感

    https://cowlevel.net/article/1959026 <AngerForce>幕后故事 这篇文章是个老坑,最近有时间开始写,也是对之前项目的一个总结和记录吧. 本篇文章 ...

  4. 有笔记本就能玩的体感游戏!TensorFlow.js实现体感格斗教程

    晓查 编译整理 量子位 出品 | 公众号 QbitAI 小时候的你在游戏中搓着手柄,在现实中是否也会模仿这<拳皇>的动作?用身体控制游戏角色的体感游戏很早就已出现,但需要体感手柄(Wii) ...

  5. 引擎十一:体积感SSS,SSR

    在2011年的时候,没写错,是11年前,某岛国的每年一度的graphic论坛,提出了多个贴图的次表面散射,Screen Space Subsurface Scatter 接着的2012年,同一个团队, ...

  6. UE3 光照 阴影

    光照 & 阴影 对于创建高水准环境而言,关卡中几何体的照明方式起着至关重要的作用.人类眼睛和脑袋希望光源能够通过特定方式与表面进行交互,填充一个房间或投射阴影.任何背离这条原则的东西都可能会破 ...

  7. viso 画背景框_3分钟漫画教程 | Q版漫画少女线稿,画完暖暖的

    今天就跟sunny一起来画一幅 看上去就很温暖的超可爱少女吧! 教程选自家的绘画教程 本次教程用到的画材有: 铅笔 勾线笔 01 起稿部分 用简单的几何画出人物动态,用正圆表现人物脑袋,然后用小一点的 ...

  8. 用python画万花筒写轮眼_万花筒写轮眼画法教程

    很多喜欢动漫的朋友看过火影忍者,绘画吧觉得火影忍者里的写轮眼很酷,那么万花筒写轮眼怎么画?绘画吧学画画网给大家带来万花筒写轮眼画法教程,有兴趣的一起来学习今天的漫画教程吧. 说起火影忍者中的眼睛那么强 ...

  9. indesign如何画弧线_彩铅画入门教程,如何给独角兽设计一款好发型

    戳这里 → 查看"爱蜜干货文章目录" 本次综合训练的目的 1.挖掘你的绘画感和想象力,彩色鬃毛色彩大家可以自由发挥哦! 2.练习彩铅的长线条,现在练习的长条还是比较简单的,下次综合 ...

最新文章

  1. PyTorch Hub发布获Yann LeCun强推!一行代码调用经典模型
  2. 006-spring cache-缓存实现-01-原生实现
  3. tf.where 用法
  4. 【作业】第六章 面向对象基础
  5. C51 特殊功能寄存器英文全称
  6. 神经计算棒 [Error 5] Toolkit Error: Stage Details Not Supported: Transpose
  7. python中int对象不可调用_'int'对象在python中不可调用
  8. 给PhotoShop安装Portraiture插件
  9. MySQL之 分库分表
  10. 用JavaScript校验日期的合法性
  11. STM32——RTC实现毫秒级计时
  12. Learning the Model Update for Siamese Trackers 论文学习
  13. 关于移动通信网络与互联网的关系
  14. linux 网速限制
  15. 计算机防火墙服务不能启动不了,Windows防火墙不能启动 服务也不能启动,怎么回事?...
  16. python plot画柱状图_Python绘制柱状图
  17. do还是doing imagine加to_to-do和doing用法及区别
  18. 深度学习之数据标准化方法综述
  19. 铁通计算机网络,【计算机网络技术】常见宽带错误代码及处理办法(使用移动宽带【铁通】、部分电信宽带故障、联通宽带故...
  20. OpenGL ES 绘制图片

热门文章

  1. 可以自定义公式的计算器_Excel万能个税计算器,税率对比显示,自定义增税点自动计算结果...
  2. db2插入的时候怎么自增_3篇长文讲“自增ID”,大部分人仍然搞错了!?
  3. java后端站内通知_正确使用Java事件通知
  4. 文本编辑软件哪个好_过年倒计时软件哪个好 过年倒计时软件推荐
  5. linux下配置钉钉内网穿透_4G工业路由器内嵌花生壳PHTunnel,为工业物联网提供智能内网穿透...
  6. mysql 页级锁写法_MYSQL中表级锁、行级锁、页级锁介绍
  7. linux uvc stm32,linux uvc深入理解(三)
  8. ORACLE基本配置
  9. 安卓学习笔记01:安装集成开发环境Android Studio
  10. 按比例设置获奖人数方案