nyuuzyou/wikis huggingface dataset:
Zh/Dota 2 Workshop Tools/Level Design/Dota/Lighting

Category:Dota 2 Workshop Tools Category:AMHC 汉化
Dota2中照明的处理方式是延迟光照（deferred lighting model），而且是动态的效果。此外照明是不需要编译的。
=== ===
这个变量控制着地图的全局光照，这里的有些设置是全局性的，其他的变量则被ent_dota_lightinfo控制着。
 	 	
镜面角度 	Specular Angle (Y Z X)	控制镜面角度 (默认值: 64 283 0)
高光功率 	Specular Power 	0 = 无限宽衰减， 较高的值 = 更清晰的衰减 (默认值：14)
视野 	FOV 	光照投射的视角区域。采用较低的值，能保证更远距离的光照和更清晰的阴影 (默认值：5)
NearZ 距离 	NearZ Distance 	这个值控制着距离玩家较近的阻隔平面的距离 (默认值：4)
纹理名称 	Texture Name 	云体阴影材质 (默认路径: ...effects/light_clouds_00)
启用阴影 	Enable Shadows 	禁用/启用阴影
云体尺寸 	Cloud Scale 	这个控制着云的规模和大小 (默认值：6500)
云1 速度 	Cloud 1 Speed 	云1材质的移动速度(默认：120)
云1 方向 	Cloud 1 Direction 	云1 材质运动方向 (默认值：0 165 0)
云2 速度 	Cloud 2 Speed 	云2材质的移动速度 (默认值：80)
云2 方向 	Cloud 2 Direction 	云2 材质运动方向 (默认值：0 145 0)
=== ===
控制着一个个局部区域的光照设置，每张地图里都包含一个env_global_light和 实体文件，他们控制的内容基本都可以由ent_dota_lightinfo entities进行平行控制。 想想在Dota2地图上从天辉穿梭到夜魇时那些变化的光照效果，这个功能在这其中发挥出了巨大的作用，而且地图上不同的光照效果也正是大家所需要的。 在一个地图上能存在多个光照实体，任意两个或者多个光照的外圈半径重叠起来时，会产生平均过渡，但是内圈半径的效果则不会相互干扰。 
 	 	
颜色 	Color 	定向的光照颜色
环绕 	Ambient 	对物体边缘照明
阴影尺寸 	Shadow Scale 	任何采用“英雄着色器” （比如：英雄，NPC，小兵）的物体，都会产生不透明阴影
地面阴影尺寸 	Shadow Ground Scale	对任何采用multiblend和global_lit_simple着色器的物体（比如支柱，地面等）产生阴影
高度雾 	Height Fog 	现在自定义地图中还不支持此功能--被迷雾笼罩的地面的不透明度（0为完全透明，Dota2地图默认为0.09）
FOW 暗度 	FoW Darkness 	战争迷雾增加不透明性。
FoW 颜色 RGB 	FoW Color RGB 	战色谜雾由这些单独的RGB值的加权平均值定义 (例如：R0 G2 B2)
天空盒名称 	Skybox Name 	尚不支持 - 添加局部的天空盒图片
天空盒色调 	Skybox Tint 	尚不支持 - 调整局部天空盒图片的色彩
内径 	Inner Radius 	ent_dota_lightinfo 的内圈半径 (注意! 这不能和任一 ent_dota_lightinfo 实体进行叠加)
外径 	Outer Radius 	ent_dota_lightinfo 的外圈半径范围，摄像机一旦穿过这个半径，如果没有什么切断摄像机的位置，光照就会受到相邻ent_dota_lightinfo 或env_global_light 实体的控制 。
=== ===
创建一个小的、无阴影效果的光照，类似于一个点光照，这个光照实体可以从它的源点产生光线出来。通常用于火炬，火焰等。
== 性能注意事项（Performance Considerations） ==
添加延迟光照到自定义地图上之后，需要明白：光照堆叠多了就会对性能造成一定损伤。 无疑是一个可以提升性能的好工具， 它可以在游戏中显示光照的半径，并且添加上颜色进行显示，如果一个地方的颜色已经变绿，那就意味着这个地方堆叠的光照已经够多了，需要减少这个地方重叠的光照半径，以减少对整体光照效果的透支。
Zh/Dota 2 Workshop Tools/Level Design/Dota/Minimap

Category:Dota 2 Workshop Tools Category:AMHC 汉化
Dota2中的小地图是一种俯瞰图，这张图可以进行编辑，但不能动态修改。需要重新定义才能支持地图几何形状的变化。地图上可以叠加动态信息，比如防御塔或单位的位置。
小地图各种设置(如玩家图标大小)可以通过脚本修改，或者在Hammer用 dota_custom_game_events 实体调整。其他的设置，如缩放或位置(如XY坐标)则必须在 /resource/overviews/minimapname.txt 这个文件内编辑。
== 自动创建小地图 ==
自动生成小地图需要进入编译地图（Compile Map，按 进入) 勾选 "Create minimap on load" ，需要注意的是产生一个新的小地图图像时，无论是自动还是手动，都将覆盖现有的微缩图像。
== 手动创建小地图 ==
* 在Hammer里，增加两个 "dota_minimap_boundary" 实体，分别放在地图的两边，用于定义XY轴的边界。他们在Z轴上的高度差就决定了小地图的深度。
* 编译并启动地图。
* 在控制台里输入 dota_minimap_create 。
* 在 /materials/overviews 下就会生成一张小地图的图片，图片的名字就和地图的名字一样。
* 小地图的设置放在 /resource/overviews/ 文件夹下面，是一个和地图同名的文本文件。
**注意：小地图的设置只会影响到叠加在上的动态图标，但不会影响图片本身。想要修改的话，请直接编辑图片。
Zh/Dota 2 Workshop Tools/Level Design/Dota/Navigation Mesh

Category:Dota 2 Workshop Tools Category:AMHC 汉化
__TOC__
导航网格，能够显示出地图上能够通行的地块，每次有变更之后，都会重新生成导航数据。导航网格控制着地图中的所有运动路径，决定着哪些地方可以去，哪些地方不能去。
导航网格在Dota2中是一种俯瞰的2D平面图形，这些显示也有一定局限性，比如悬挂物和桥梁下方也是不能通过的。这个网格的显示是由64x64的单元网格组成的，而整个网格覆盖在全地图上。 为了创建出导航网格，必须在自定义地图上有一个可以行走的材质地表。所有“混合”的材质都具有可行走的特性。自定义的材质则需要从dota.nav.walkable 1指定一个“User Material Attribute（用户材质属性）”，以便导航网格可以覆盖上去。
== Hammer导航预览 ==
允许在不进入游戏的情况下预览导航网格，只要使用顶端工具栏上的导航预览按钮就可以实现这个功能。点击之后就会在任何有效表面上动态绘制导航网格。在游戏则可以在控制台输入 "dota_gridnav_show 1" 进行查看
=== 颜色定义 ===
* 绿：开放-任何单位可以在这里移动。
* 红：禁止 -禁止通行， 在网格块之间的高度变化或者阻隔网格可以阻断这块区域，但是飞行单位依然可以穿过这些地方。
* 紫 (仅在Hammer编辑器内生效)：动态阻隔-在hammer中ent_dota_tree会显示出来。
* 蓝：英雄阻断 - 英雄单位不能进入这块区域。
* 黄：生物阻断 - 生物AI单位不能进入这个区域，但是AI控制的英雄也会遵循英雄阻隔的原则，不会受到这些的影响。
== 创建一个导航网 ==
地图编译时的导航网格会自动创建。
* 点击工具栏顶端的 Run Map 按键，或者按下 。
* Build Physics 必须确认。
* Build Grid Nav 必须确认。
== 阻隔 (Clip) ==
不同于其他Suorce引擎的游戏，阻隔可以影响到模型和地形表面的碰撞，在Dota2中，阻隔网格只会影响到它包含的导航网格。织构化一块阻隔网格，会影响到它所包含的导航网格。阻隔材质应用到网格上是不可以见也不可被渲染的。
一旦在一张地图上生成好导航网格，它就会组成一个很大的栅格区域。每一个方格都包含阻隔信息，当有单位想穿过这块区域时就会生效，玩家操作的英雄也是一种单位。
=== 阻隔材质的类型 ===
应用了阻隔材质的网格，会在编译的时候提供数据给导航网格，从而影响地图。要了解网格的构建和材质应用到网格面，请看 教程。
下面是可应用到网格阻隔，材质的类型：
:;跳跃（Skip）
:用来阻隔步行单位，飞行单位并不受约束，依然可以穿过这个空间。
:;阻隔（Clip）
:最基本的变化模式，单位可以穿过它的顶部，就像坡道、楼梯地形或者其他可以创建的形状，这些形状上面也依然会生成导航网格。就像河面上架了一座桥（限制桥两边），就是很好的阻隔笔刷实例。
:;英雄阻隔（Hero Clip）
:英雄不能穿过这个空间，不论行走还是飞行。
:;生物阻隔（Creature Clip）
:和英雄阻隔类似，但是阻隔的是AI控制的单位。
:
= 控制台命令 =
;dota_gridnav_show
* "0" - Off （关闭）
* "1" - Basic Clip （基本阻隔）
* "2" - Hero Clip （英雄阻隔）
* "3" - Creature Clip （生物阻隔）
Zh/Dota 2 Workshop Tools/Level Design/Dota/Performance

Category:Dota 2 Workshop Tools Category:AMHC 汉化
后文主要是一些提示，有关于性能消耗和建造自定义地图时可以考虑的优化内容。 
=== 客户端实体 (Client Side Entities) ===
在Source引擎中，大多数实体都是需要联网，发送其状态到服务器，以避免客户端出现不一致的现象。为了优化这些问题，“_clientside”实体类型就出现了，它可以减少网络流量，并会首先应用于美化非游戏可玩（non-gameplay）的实体。
在这方面有个不错的例子：Dota2中的所有环境生物都会用到"prop_dynamic_clientside"这个实体，他们不会把自己的状态信息发送到服务器，每个客户端会看到不同的场景，不过这并不影响游戏的进行。
如果实体状态对游戏很重要，那么应该使用prop_dynamic来代替。 
=== 树木放置 (Tree Placement) ===
树木放置使用的是ent_dota_tree 这个实体，创建出可破坏的树木。放置时将捕捉到64格增量，让它们和导航网格对齐。在一个64x64的方格内，放置众多树木往往会让他们对齐到同一个位置上，致使一些树木在完全相同的位置重叠。 这可不太好，为了避免这个情况，任意放置一个"ent_dota_tree"到最少64格的网格中，保证在运行时，树木不会出现在一个意想不到的位置而失效。 
=== 地形编辑器执行说明 (Tile Editor Perf Implications) ===
地形编辑器允许编辑者创建出非常精细的地图，这很可能在狭小的空间放置过多的对象，植物和树木，使电脑运行缓慢。所以在使用地形编辑器的时候，也应该坚持对性能进行限制。 
=== 光照性能 (Lighting Performance)===
添加延迟光照到自定义地图上之后，需要清楚：光照堆叠多了就会对性能造成一定损伤。 无疑是一个可以提升性能的好工具， 它可以在游戏中显示光照的半径，并且添加上颜色进行显示，如果一个地方的颜色已经变绿，那就意味着这个地方堆叠的光照已经够多了，需要减少这个地方重叠的光照半径，以减少对整体光照效果的透支。
Zh/Dota 2 Workshop Tools/Level Design/Getting Started

Category:Dota 2 Workshop Tools Category:AMHC 汉化
== 启动Hammer ==
# 打开Steam的 库 ，然后找到 工具 运行 "Dota 2 Workshop Tools" 。
# 点击 创建空白地图（Create Empty Addon） 然后取个合适的名字，比如可以叫 "myaddon" 。
# 新的地图就会高亮显示，并且被设置为默认地图。
# 点击（启动） Launch Dota 2 Workshop Tools。
# 在 资源管理器（Asset Browser） 窗口点击 Hammer 图标。
下一章:
Zh/Dota 2 Workshop Tools/Level Design/Terrain Blending

Category:Dota 2 Workshop Tools Category:AMHC 汉化
 
__TOC__
地形混合允许多个纹理合成一个材质来创造两种或多种纹理之间的平滑变化。在Dota2中在一个场景中许多可见深度可以通过 合成许多纹理来创造一个虚构深度。
== 粉刷工具 ==
粉刷工具 激活的时候，会出现几个面板来控制这些纹理进行混合。
* 点击粉刷的图标 或者 按下 来进入粉刷工具的模式。
* 为了开始编辑我们使用 选择一个有多重材质的面。
=== 绘制 ===
* Everything（所有物体） - 所有物体都会使用选中的材质进行混合。
* Selected Objects（选中物体） - 只将被选择的物体进行混合。
* Selected Faces（选中面） - 只将选择的面进行混合。
* Back-Facing Surfaces（背面） - 允许混合影响背面。
* Trace Against Bounding Box（跟踪针对边界框） - 「无说明」
=== 可视化 ===
* Show Verts（显示顶点） - 显示绘图线旁的顶点（vertex）位置，会根据分配的刻线位置进行改变。
* Highlight Paintable Selection（高亮可绘制面） - 高亮所有可以混合的面。对于操作一个面的一部分和不算大的几何块时，这是很有帮助。
* Debug Mode（调试模式） - 「无说明」
=== 粉刷 ===
* Flood Fill（快速填充） - 用一个选中的纹理通道填充整个纹理，这会对所有对象使用选中的这个材质。
* Paint Mode（粉刷模式） - 在下面提到的两种模式之间切换。
;Blend（混合）
设置当前模式，用以改变在顶层里选中的纹理通道的作用
;Color（颜色）
允许在顶层应用调色，任何颜色可以混合到地形上，为材质增添变化。
=== N-通道混合 ===
* Radius（半径） - 左键单击拖动 滑块，或者在要编辑的区域上，按下鼠标中键拖动(水平) 来调整粉刷工具的半径大小。
* Strength（强度） - 左键单击拖动 滑块，或者在要编辑的区域上，按下鼠标中键拖动(垂直) 来调整粉刷工具的强度。
* Channels（通道） - 选中这些来修改特定的混合层，最多有4个可用通道。
;Channel 3
选中的多重混合材质的第三纹理层,通常保留为一个黑色的纹理用来与通道2的纹理混合(当在地形组件中使用时)。
;Channel 2
选中的多重混合材质的第二纹理层,通常保留为最常用地表材质(当在地形组件中使用时)。
;Channel 1
选中的多重混合材质的第一纹理层,通常保留为悬崖(当在地形组件中使用时)。
;Channel 0
选中的多重混合材质的基本纹理层,当在地形设置中使用时通常保留为泥质路径。这图层不能被软化或锐化。
Zh/Dota 2 Workshop Tools/Level Design/Tile Editor Basics

Category:Dota 2 Workshop Tools Category:AMHC 汉化
= 总览 =
地形编辑器能够让你流畅地绘制地形，调整地形的高度、修改地形的配置。它采用了关联地图的地形组件（tileset reference map），让你找到合用的地形。地形编辑器允许你升高/降低地表和水面，放置游戏中的装饰品，把不同高度的地形用斜坡连接起来， 在地表种植树木，设置道路，在这些充满美学的细节中循环。
= 使用地形编辑器做出您第一张地图 =
== 快速入门 ==
* 在Hammer中，通过 File > New 新建一张地图。
* 在Hammer的界面左侧，点击地形编辑器，或者使用快捷键 +，地形编辑器会自动生成一大块空白的平原地形，你可以在你的3D和2D视窗里面进行查看。
* 使用 File > Save 保存你的地图， 保存的地图会放在 maps 文件夹下，请记得随时保存文件。
* 切到Hammer里的预设界面，然后拖拽 basic_entities.vmap 到你的3D视窗里，这样你就能获取到dota地图里的实体了。
== Hammer编辑器的基本导航 ==
* 在你的3D视窗中，按住鼠标右键用来转动镜头，使用WASD前后左右移动。
** 前进
** 后退
** 左移
** 右移
现在你知道了基本的操作，不过不用急着在2D窗口里进行导航。下面你要了解到的是在 里的其他导航方式。
== 绘制地表 ==
现在开始在空白地图上绘制一些地表，在3D和2D视窗中使用 切换到地形绘制模式，你的鼠标变成一个笔刷，能够让你绘制地形。可以通过按住鼠标中键 左右晃动来调整笔刷的半径大小。 撤销操作的命令则是 + ，所有地形编辑器的操作都是可以撤销的，所以在本教程中，请尽情感受自由绘制地表的乐趣。
让我们在你的刷新点周围做一个小小的场景，任意选择一个笔刷半径，在3D视窗中按下 抬升地形的高度，你可以按住 然后到处拖拽鼠标，这样就可以一次性抬升一大片地表。按住 + 则可以降低你的地表。在你的 basic_entities 预设周围大范围抬升地表高度，这样你就获取到了一个基本的地图边界。
== 斜坡，水体和树木 ==
接下来，按下 切换到道路绘制模式，然后使用 在峭壁上绘制斜坡，这样能把高低地形给连接起来。按下 切换到水体绘制模式，然后在抬升起来的地形边界上添加一小块水体。按下 切换回道路模式，然后选择水体的边缘绘制一个斜坡。
使用 切换到树木绘制模式，然后在你的小场景里面绘制一小块树林，你可以选择不同的树木类型，也可以按住 + 左右晃动鼠标来调整树木笔刷的密度。
== 放置饰品 ==
下一步，使用 切换到饰品放置模式， 请先确认当前的饰品类型为道具，然后用 放置一个你选中的饰品下来。选中道具的蓝色节点，然后拖拽 让这个道具左右移动。当你把道具放置到你想要的点上之后，把你的鼠标放到蓝色的节点上，然后按下 或者 在不同的变化类型中来回切换（有些饰品没有变化），此外，可以按住 同时拖拽 旋转放置好的饰品。
== Dota网格导航系统 ==
Dota使用了一套网格导航系统，用于决定那些单位可以通过，哪些不能通过。要先看到这些导航网格，按下 Toggle Grid Navigation Preview 就可以了。
在导航窗格视角中，绿色方块代表可以通行的区域，红色的则是禁止通行（飞行单位除外）。粉色区域则是一种特殊区域，代表有树木阻挡所以不能通过（但是树木可以摧毁）。
要确保你的英雄能走到商店里，就需要确保通往商店的道路全是绿色的方块（英雄单位来自 basic_entities 预设）。
下一章: 会告诉你如何编译地图，然后在游戏里运行。
Zh/Dota 2 Workshop Tools/Materials/Dynamic Material Expressions

__TOC__
动态表达式可以用来循环地播放材质参数或者用游戏代码提供的数值迫使材质表达某个游戏状态。
== 在材质编辑器中新建动态表达式 ==
# 单击材质编辑器右边的小三角形按钮：
# 在弹出对话框中，输入你的表达式。例如： 0.5 * sin( 2*time() ) + 0.5 是一个平滑的在0-1之间的循环参数。
# 在材质参数中编辑已有的动态表达式，单击“f(x)”按钮。 
# 从材质参数移除动态表达式：打开编辑对话框并清空编辑区域。
== 动态表达式的贴图参数和其他参数的对比 ==
理解贴图参数和其他参数（诸如“Color Tint”、有UI滑块的计数器参数）之间的区别非常重要。“Color Tint”参数传递数字值给可以用材质表达式（比如上面的例子）动态计算的着色器。贴图参数给着色器传递贴图，所以给计算颜色值的贴图参数增加表达式是无效的。 
贴图参数上的动态表达式只限高级编辑者使用：这些表达式必须参考游戏代码提供的指向贴图的属性。
== 动态表达式参考 ==
材质表达式与HLSL代码非常相似。表达式可以为两种结构之一：
简单的内联表达式（只有一个数学表达式），例如：
sin(SomeAttribute)
10 + sqrt( 2 ) * frac( time() )
表达式也可以由多个中间表达式组成——每个都计算一个临时数值——由return表达式紧接来使用这些中间数值，例如：
tempVar1 = sin(SomeAttribute);
tempVar2 = exists(SomeOtherAttribute) ? float4( 1, 2, 3, 4 ) : float4( 5, 6, 7, 8 );
tempVar3 = cos(tempVar1)
return tempVar1 + dot4( tempVar2, SomeThirdAttribute.xyzz ) * tempVar3;
=== 标识符 ===
表达式中的标识符可以参考保存在局部变量中的中间数值（上例中的tempVar1）或游戏代码提供的属性（上例中的SomeAttribute）。如果一个标识符不是一个局部变量，那么它被（编译器）假定由游戏代码提供。
如果一个表达式依靠游戏代码提供但代码没有提供它，表达式估算会立即失败而且拥有该表达式的参数值会回到材质参数的默认值。
=== 数据类型 ===
内部计算的数据类型是float4，所有数据在内部被转换为四维浮点数，如果不足四维，缺失的维度由给定维度的最后一维补全。
例如：
* 3.5 变为 (3.5, 3.5, 3.5, 3.5)
* float2( 1, 2 ) 变为 (1, 2, 2, 2)
* float3( 1, 2, 3 ) 变为 (1, 2, 3, 3)
* vSomeVector.xyz 变为 vSomeVector.xyzz
* vVec3.zx 变为 vVec3.zxxx
任何计数函数被传入四维。任何返回计数数值的函数输出四维且每维的值相同。
=== 操作符 ===
按优先级排序：
# function call
# ()
# . (比如.xyxy)
# ! - (-NOT运算)
# * / % (乘/除/模)
# + - (加/减)
# < > <= >= (比较符)
# == != (等于/不等于)
# && (AND运算，C语言)
# || (OR运算，C语言) 
# ?: (条件运算：只有指向谓项的表达式被估算)
# = (赋值)
=== 嵌入函数 ===
所有函数以float4()作为参数。所有计数操作将被传递四维。例如sin(vSomeVector) 会输出向量(sin(vSomeVector.x),sin(vSomeVector.y),sin(vSomeVector.z),sin(vSomeVector.w))
* exists(x) - x存在返回1，否则返回0
* sin(x)
* cos(x)
* tan(x)
* frac(x) - 返回x的小数部分
* floor(x) - 返回小于等于x的最大整数
* ceil(x) - 返回大于等于x的最小整数
* saturate(x) - 饱和处理，大于1变成1，小于0变成0
* clamp(x, min, max) - 饱和处理，大于max变成max，小于min变成min
* lerp(a, b, t) - 在a和b之间线性插值，参数t在[0,1]之间变化(t=0返回a，t=1返回b)
* dot4(v0, v1) - 四维点积
* dot3(v0, v1) - 三维点积
* dot2(v0, v1) - 二维点积
* log(x)
* log2(x)
* log10(x)
* exp(x)
* exp2(x)
* sqrt(x)
* rsqrt(x) - 1/sqrt(x)
* sqr(x) - 返回x*x
* sign(x)
* abs(x)
* pow(x, y)
* step(a, b) - If ( a >= b ) return 1; else return 0;
* smoothstep( a, b, t ) - t=a返回0，t=b返回1，参数0<t<1，其余返回0-1之间的hermite插值
* float4(v0, v1, v2, v3) - 返回 (v0.x, v1.x, v2.x, v3.x)
* float3(v0, v1, v2) - 返回 (v0.x, v1.x, v2.x, v2.x)
* float2(v0, v1) - 返回 (v0.x, v1.x, v1.x, v1.x)
* time() - 返回当前时间
* min(v0, v1)
* max(v0, v1)
* SrgbLinearToGamma(x)
* SrgbGammaToLinear(x)
* random(xMin, xMax) - 返回xMin.x和xMax.x间的随机值
* normalize(v0) - 返回单位向量，xyz轴单位化，w轴保持不变
* length(v0) - 返回向量在xyz轴的模
Category:Dota 2 Workshop Tools
Category:AMHC 汉化
Zh/Dota 2 Workshop Tools/Materials/Material Creation

一个简快的手把手指南，教你如何在Dota 2 Workshop Tools中建立一种材质。
== 建立纹理(Texture) ==
任何图像都可以做为纹理，只要长宽为2的次方即可（2，4，8，16，32，64，128，256，512，1024，2048等）。更高分辨率的纹理会给缓存带来负面影响，但也能使纹理看上去更加清晰。纹理的大小通常取决于不同类型的物件所需的精致度。
== 建立材质(Material) ==
图像必须被转成VMAT文件后才能被 材质编辑器 使用。材质编辑器 能透过 资源管理器(Asset Browser) 启动。
# 打开 材质编辑器 。
# 从 文件(File) 选单中选择 新建(New) 。
# 保存新材质，通常的做法是将材质存至您的插件目录下的 materials 子目录中。
# 点击 "着色器(Shader)" 按钮并将着色器调整为Global Lit Simple。
# 保存您的图像到相同的地方，并使用相同的档名。
# 在变量(Variables)的面板标签中，点击内於色彩(Color)群组文件夹小图标，这会弹出一个窗口 。接着至图像所在的正确目录寻找您先前所保存的图像文件。常见的格式是TGA或PSD，选择您的图像文件并开启它。
# 保存材质后它应该会出现在 资源管理器(Asset Browser) 中。
Category:Dota 2 Workshop Tools
Category:AMHC 汉化
Zh/Dota 2 Workshop Tools/Model Editor/Layout

模型编辑器可用面板的布局 概述 以及 详细说明。
== 1. 主菜单(Main Menu) ==
=== 文件(File) ===
基本的文件操作有保存(Save), 另存为(Save As), 最近浏览的文件(Recent Files)等等。
模型编辑器可以从游戏( .vmdl_c )中打开文件,也可以打开(.vmdl)包含的模型文件。
=== 用户界面(UI) ===
隐藏和显示界面元素.
=== 工具(Tools) ===
如何访问模型编辑器工具:
* 视图序列(View Sequences): 加载视图序列部件。
* 查看材质(View Materials): 加载一个在其中显示模型材质的部件。
* 编辑材质组(Edit Material Groups): 材质组已经存在时,会弹出一个用来编辑它们的界面。
* 变形资源管理器(Morph Explorer): 预览变形的形状的界面。
* 骨骼合并工具(Bone Merge Tool): 将模型骨骼合并入工程中的界面。
* 载入英雄库存物品(Load Stock Hero Items):例如,对于dota的英雄来说,会提取出他们的默认物品。
* 查看键值(View Keyvalues): 查看被编译到模型上的键值。
* 首选项(Preferences): 用来设置,保存和载入预设的界面。
* 截屏(Screenshot): 对当前视窗进行截屏。
* 强制保存所有文件(Force Save All): 保存所有此工程相关的文件。
* 重新编译(Recompile) > 重新编译资源(Recompile Asset): 重新编译当前资源文件。
* 重新编译(Recompile) > 强制重新编译资源(Force Recompile Asset): 强制重新编译模型文件依赖的所有文件。
=== 资源(Asset) ===
可以通过 资源菜单 检查 高级资源选项。
=== 显示(Display) ===
切换视窗元素的显示或隐藏。
=== 着色(Shading) ===
切换多种视窗的着色选项。
=== 模型(Model) ===
添加网格,Hitbox和附着点。参见 。
=== 动画(Animation) ===
添加动画。参见 。
=== LOD ===
选择当前模型显示的LOD等级。
== 2. 工具栏(Tool Bar) ==
选择含有控制轴的模式。
可选择的模式:
* 移动(Move)
* 旋转(Rotate)
* 缩放(Scale)
* 边界框(Box Scale)
== 3. 大纲视窗(Outliner) ==
大纲视窗是模型的一个层次化结构视图.大纲视窗由 可编辑数据 和 已编译数据 两部分组成。在大纲视窗中选择可编辑数据项,会将其发送至属性编辑器中进行编辑。 
=== 可编辑数据(Editable Data) ===
* 模型文件项(VMDL item)
** 大纲视图中的第一个选项代表着模型的。 
** 模型文件下的项表示 直接储存在模型文件中的数据, 或是与模型文件有关的外部数据。
** 大纲视图树中模型文件的子项表示和模型有关的不同数据组。
* 文件
** 文件下的项表示模型文件依赖的硬盘中的文件。
=== 已编译的数据(Compiled Data) ===
树中的这部分代表着已编译的模型数据。这些数据在视窗中可见但不可编辑。
=== 场景(Scene) ===
; 地平面 : 选择此项后在属性编辑器中修改地平面的显示。 
; 原点轴 : 选择此项后在属性编辑器中修改原点轴的显示。 
; Head Light : 选择此项后在属性编辑器中修改head light的显示。 
注意: 此功能暂时不支持Dota2。
== 4. 视窗(Viewport) ==
视窗中包含当前模型的渲染工具栏。
=== 摄像机导航(Navigation) ===
操作摄像机:
+	摄像机向前,向左,向后,向右移动。
 	以模型为轴心旋转移动摄像机。
 	摄像机变焦。
 	摄像机云台。
 	摄像机旋转。
 	移动摄像机至模型中心。
显示(Display) > 重置摄像机(Reset Camera) 重置摄像机至默认位置。
; 模型状态(Model Status) : 开关显示模型信息包括模型的多边形数。
; HUD信息(Hud Message) : 开关提示用户多种信息的视窗显示。(例如：此模型为只读文件，从Source引擎中导入等等)
; 帧率(Frame Rate): 开关帧率显示。
; 线框(Grid) : 开关线框显示。
; 原点轴(Origin Axis) : 开关原点轴显示。
=== 显示菜单(Display Menu) ===
使用这个菜单来切换与模型有关的显示选项。
=== 着色菜单(Shading Menu) ===
使用这个菜单修改模型的着色或开关显示线框覆盖。
== 5. 属性编辑器(Property Editor) ==
显示所选项中可编辑的数据.属性编辑器支持复选。
除标准的编辑方法(文本,复选框以及数据)外,属性编辑器中还有一些可以用户自定义的编辑界面。
=== 浏览文件(File Browsing) ===
* 在“文件路径”旁你会看到一个有一些按钮的文本框。这个界面元素表明“文件路径”是可浏览的。
* 点击放大镜图标将会调用一个允许选择文件的浏览器。
* 文件名大多数与当前内容的路径有关。
=== 添加和移除列表元素(Adding and removing list elements) ===
* "+"图标表示你可以在列表中添加一个元素。在这种情况下,点击活动旁的"+"来添加一个新的活动。
* 点击红色的"x"图标以移除元素。
=== 添加一个新元素(Add a new element) ===
* 带有圆圈的“+”图标表示可以创建一个项。在这种情况下，点击有着“IK 规则”的图标将创建一个新的“IK规则”元素。
* 点击红色的"x"图标以移除元素。
=== 组合框(Combo boxes) ===
* 在组合框中的文本框内输入条件来过滤可用的选项。
* 在文本框中输入并按下回车键会强制将该值修改为输入值。,这当你在下拉界面中找不到所需的文本,这个方法时很有帮助.
== 6. 时间轴(Timeline) ==
使用时间轴来控制动画的播放。
#时间轴滑块
#:*长按滑块以 暂停播放 或 拖动播放 动画
#恢复绑定姿势
#:* 点击这个按钮会将模型强制恢复为绑定的姿势。(也就是动画应用前的姿势)
#:* 在绑定姿势下动画将不会播放。
#模拟物理效果
#:* 点击此按钮以强制模拟物理效果。
#:* 动画不会在物理模式下播放。
#: 
#模拟布料效果
#:* 点击此按钮以强制模拟布料效果。
# 回放操作(Playback Controls)
#:* 重新播放(Restart)
#:* 回到开头(Go To Start)
#:* 后退 (Step Back)
#:* 播放/暂停 (Play/Pause)
#:* 前进 (Step Forward)
#:* 至末尾(Go To End)
# 回放速度
== 引用链接 ==
* 
* 
Category:Dota 2 Workshop Tools
Category:AMHC 汉化
Zh/Dota 2 Workshop Tools/Model Editor/Model Menu

的模型菜单。
== 网格(Mesh) ==
=== 添加网格(Add Mesh) ===
* 打开浏览器以添加网格至模型
* 一个文件可以有多个网格
* 网格可以通过大纲(outliner)访问，并可在"Mesh List"下找到该项目
** 选择一个网面项目以在属性编辑器中编辑
=== 添加网格群组(Add Mesh Group) ===
* 添加网格群组列表至vmdl文件
=== 添加LOD群组(Add LOD Groups) ===
* 添加LOD群组列表至模型 
* LOD群组可以通过大纲(outliner)访问，并可在"LOD Group List"下找到该项目。
== 碰撞(Collision) ==
=== 添加物理网格(Add Physics Mesh) ===
* 打开浏览器以添加碰撞网格至模型
* 一个Vmdl文件可以有多个物理网格
* 物理网格可以通过大纲(outliner)访问，并可在"Physics Mesh List"下找到该项目
== 附着点(Attachments) ==
=== 添加附着点(Add Attachment) ===
* 启动添加附着点向导：
** 为附着点命名
** 选择一个父关节(parent joint)
* 附着点会在大纲中的attachment list item显示出来
* 选择附着点能在属性编集器中(property editor)编辑名字
* 选择附着点会在viewport显示gizmo(用来控制模型的小控件)，以进行操作
* 在附着点项目下的是influence项目 ( the joint the attachment is parented to ) 
* 选择influence项目以可编辑其位置与角度
=== 添加 External Attachment List(Add External Attachment List) ===
* 浏览external attachment list文件
== Hitboxes ==
=== 添加Hitbox(Add Hitbox) ===
* 启动Hitbox向导
** 选择父关节
** 为Hitbox命名
=== Autopopulate Hitboxes ===
* 选择关节，则Hitboxes会被加入至所选关节 
=== 添加 Hitbox Set List(Add Hitbox Set List) ===
* 添加空的 hitbox set list
=== 添加 External Hitbox Set List(Add External Hitbox Set List) ===
* 浏览到 external hitbox set list
== 添加材质群组(Add Material Group) ==
* 添加"Material Group List"项目到大纲
* 添加新材质群组以为模型设立"skins"
* 点击大纲中的material group将会在视图显示skin预览
== 添加材质映射(Add Material Remap) ==
* 添加"Material Remap List"至模型。这是一个能让现存的材质指向参考至新材质的方法。
* 材质映射Item
** 搜索材质：选择欲要取代的材质
** 取代材质：浏览新的材质
Category:Dota 2 Workshop Tools
Category:AMHC 汉化
Zh/Dota 2 Workshop Tools/Modeling

Category:Dota 2 Workshop Tools Category:AMHC 汉化
== 入门指南 ==
* 
* 
* 
* 导入模型
* 
* 
== Advanced Features ==
* 
== 支持的模型格式 ==
* 
* OBJ
* DMX
* SMD
Zh/Dota 2 Workshop Tools/Modeling/Model Creation

Category:Dota 2 Workshop Tools Category:AMHC 汉化
所有Dota 2 Workshop Tools模型需要从一个由3D编辑包导出的网格文件开始。Dota 2 Workshop Tools支持 ,OBJ和DMX文件格式。
* - 模型编辑器界面和操作。
* - 使用模型编辑器进行基础的编辑任务的向导。
* 
== 创建一个模型资源 ==
下面是一些关于怎样把你创建的模型导入到的小例子：
=== 从网格开始 ===
使用现有的网格文件创建模型：
# 启动 模型编辑器 。
# 打开 文件(File) 菜单，选择 从网格文件创建新的VMDL(New VMDL From Mesh File)。
# 浏览网格文件。
# 一个新的模型编辑器工程将在视窗部分出现，和网格一同显示。
#* VMDL文件的名字由网格文件产生。例如，一个名称为“test.fbx”的网格会让模型命名为“test.vmdl”。如果网格拥有一个“_mesh”的后缀，则会去掉VMDL文件的名字。
#* VMDL文件会在目录作为新的网格被创建，除非网格在一个名为“dmx”或者“fbx”的目录中。如果是那样的情况，文件会储存在一个目录里。例如，一个存在models/test/fbx/test.fbx中的网格会使一个VMDL存在models/test/test.vmdl中。
# 添加碰撞几何形状时，选择主菜单栏的 模型(Model) > 碰撞(Collision)> 添加物理网格(Add Physics Mesh)。
# 浏览一个碰撞网格。
# 从 预览(Display) > 碰撞体积(Collision Geo) 菜单项目，可以查看碰撞网格。
=== 文件(File) > 新建(New) ===
在空白模型文件创建一个模型：
# 启动 模型编辑器。
# 在 文件(File) 菜单，选择 新建(New)。
# 命名新文件，并储存在当前游戏的目录文件夹中。
# 你会看到一个空白工程的模型编辑器。
# 选择 模型(Model) > 网格(Mesh) > 添加网格(Add Mesh) 来添加网格。
# 浏览网格文件。
# 网格在视窗中会显示出来。
Zh/Dota 2 Workshop Tools/Modeling/Model Troubleshooting

Category:Dota 2 Workshop Tools Category:AMHC 汉化
一些处理常见问题的小贴士。
== 缺失 材质贴图(Materials) ==
right|200px|thumb|网格缺失材质贴图(Materials)
* 带有缺失的材质贴图的网格文件会在预览中显示为发红光的材质。
* 这其中的原因会是：
** 被网格映射到的材质只有在某一后才会存在。
** 文件映射功能关闭，如需要了解材质赋值如何映射到材质位置上，参考
* 若要处理模型编辑器的问题，建立一个
# 前往 模型(Model) > 添加材质映射(Add Material Remap)
# 在中选择"Material Remap 0"项目(它会在“材质贴图映射列表(Material Remap List)”项目下方)
# 在中的“搜索材质贴图(Search Material)”下拉列表里选择要被映射的材质贴图
# 点击位于“替换材质贴图(Replace Material)”旁边的放大镜图标，浏览替代材质贴图
# 保存工程
:
== 碰撞外壳(Collision Hull)错误 ==
在Dota2的多数世界模型中，通常不需要碰撞外壳。
* 默认情况下，该工具会将碰撞体积设置为凸状。如果你有几何形状，它的样子就会是这样：
center|250px
:
* 默认情况下，你的碰撞体积如下：
center|250px
*要解决这个问题，并使之与几何形状匹配，选择物理网格项目（在大纲窗口的“物理网格项目(Physics Mesh Items)”下可以找到）
*在属性编辑器中，取消“一个凸块(One Convex Piece)”，选择“使用恰当的几何形状(Use Exact Geometry)”，并保存工程
center|250px
:
Zh/Dota 2 Workshop Tools/Panorama/Custom UI Manifest

任何自定义游戏的根基，都是Custom UI Manifest XML文件。它描述了这个游戏将使用那些额外的XML文件，从而加载所需的内容。
 content/dota_addons/ADDON_NAME/panorama/layout/custom_game/custom_ui_manifest.xml
== 例子 ==
这是一个关于Manifest XML文件的例子，展示了如何用Valve开发的多队伍记分板替换掉默认记分板。你的Manifest文件可以包含任何CustomUIElement入口，以及可以参考任何Valve创作的XML文件或者你自己的XML文件。
<root>
	<script>
		//禁用内置顶部记分板，并设置为多队伍记分板。		GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_TIMEOFDAY, false );
		GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_HEROES, false );
		GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_FLYOUT_SCOREBOARD, false );
	</script>
		
	<Panel>
		<!-- 使用valve开发的多队伍记分板, 以替换默认dota2记分板。 -->
		<CustomUIElement type="HudTopBar" layoutfile="file://{resources}/layout/custom_game/multiteam_top_scoreboard.xml" />
	</Panel>
</root>
== 自定UI元素 ==
有一种特殊的板类型，仅仅是为了给manifest文件使用。它具有如下两种属性:'type' （类型）和'layoutfile' （布局文件）用于注册额外的XML文件，以便让系统加载它们并在正确的显示这些元素。
你可以在一个type下注册多个元素，它们会根据manifest文件中的顺序叠在一起。
属性 	描述
type 	布局文件所描述的UI类型。 (见下表 "Custom UI Element Type" )
layoutfile	一个XML文件名，会和其他同类型的UI一起被加载和显示。
自定义UI元素类型 	描述 	默认UI
Hud 	游戏内HUD-在完成英雄选择后可见。 	(None)
HeroSelection 	英雄选择界面-在完成游戏初始化后，游戏开始前可见（或者在玩家还未完成英雄选择时可见）。 	(None)
GameInfo 	一个特别的板，用来展示你的自定义游戏的基本信息。在整个游戏过程中都可以通过“i”信息按钮调出。 	(None)
GameSetup 	一个用来完成自定义游戏设置的UI（选择队伍/投票难度等）。另见: 	layout/custom_game/team_select.xml
FlyoutScoreboard	当玩家输入“+showscores”命令或点击“scoreboard”按钮时弹出记分板。 	(None)
HudTopBar 	顶端的那一条。和HUD基本一样，但是在“结束后”状态下仍然可见。 	(None)
EndScreen 	结束画面（带GPM/EPM的那个）在游戏结束后弹出。 	(None)
== 禁用dota默认UI==
Example:
// 使用 GameUI.SetDefaultUIEnabled to禁用 default UI (在动态地切换UI的时候可能会造成一些意外的后果）
GameUI.SetDefaultUIEnabled( DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_TIMEOFDAY, false );
默认UI元素 	描述
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_TIMEOFDAY 	一天内的时间 (中间那个钟).
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_HEROES 	在HUD顶部的队伍和英雄信息。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_FLYOUT_SCOREBOARD 	界面左边的弹出式记分板。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_ACTION_PANEL 	英雄动作的UI。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_ACTION_MINIMAP 	小地图
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_PANEL 	整个物品栏UI。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_SHOP 	物品栏UI的商店部分。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_ITEMS 	物品栏UI 的玩家物品部分。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_QUICKBUY 	物品栏UI的快速购买部分。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_COURIER 	物品栏UI的信使部分。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_PROTECT 	物品栏UI的防御符文部分。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_INVENTORY_GOLD 	物品栏UI的金钱显示部分。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_SHOP_SUGGESTEDITEMS 	商店界面的推荐物品。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_HERO_SELECTION_TEAMS 	英雄选择UI-近卫和天灾的玩家列表。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_HERO_SELECTION_GAME_NAME	英雄选择UI-游戏模式名称显示。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_HERO_SELECTION_CLOCK 	英雄选择-计时器。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_TOP_MENU_BUTTONS 	HUD顶端左部的菜单按钮。
DotaDefaultUIElement_t.DOTA_DEFAULT_UI_ENDGAME 	游戏结束画面。
Category:Dota 2 Workshop Tools
Category:Panorama
Zh/Dota 2 Workshop Tools/Panorama/Debugger

受网络开发工具链的启发， 也具有一个强大的内置debug工具。开启Debugger的方法如下:按下F6，将光标移动到一块PanoramaUI上，然后点击。Deubg窗口将会开启，显示被选择UI的具体内容和所处环境（如果你没法点击这个UI，比如说它被设定为 hittest='false' ，那么你可以先点击一块别的UI，然后在板继承里手动找到你要找的板。）。
Debugger工具分为两个主要部分：板的继承（在左侧）和所选择板的具体信息（在右侧）。
There are two main parts of the debugger: the panel hierarchy (on the left) and details about the selected panel (on the right).
== 板继承==
板继承会完整地显示一个树状图，包含所有在UI中显示的板元素。
== 板的具体信息 ==
这部分Debugger会显示所有应用到板上的CSS规则，并且会指明哪一条最终决定了某个属性值。如果将光标悬停在某个CSS属性上，将会跳出一个提示栏，显示这个属性的具体信息和它的合法值。
你也可以显示所有板属性最终计算后的值。
Category:Panorama
Category:Dota 2 Workshop Tools
Zh/Dota 2 Workshop Tools/Panorama/GameUI SetMouseCallback Example

// 这是如何使用 GameUI.SetMouseCallback 函数的示例
GameUI.SetMouseCallback( function( eventName, arg ) {
	var CONSUME_EVENT = true;
	var CONTINUE_PROCESSING_EVENT = false;
	if ( GameUI.GetClickBehaviors() !== CLICK_BEHAVIORS.DOTA_CLICK_BEHAVIOR_NONE )
		return CONTINUE_PROCESSING_EVENT;
	if ( eventName == "pressed" )
	{
		// Left-click is move to position
		if ( arg === 0 )
		{
			var order = {};
			order.OrderType = dotaunitorder_t.DOTA_UNIT_ORDER_MOVE_TO_POSITION;
			order.Position = GameUI.GetScreenWorldPosition( GameUI.GetCursorPosition() );
			order.Queue = false;
			order.ShowEffects = false;
			Game.PrepareUnitOrders( order );
			return CONSUME_EVENT;
		}
		// Disable right-click
		if ( arg === 1 )
		{
			return CONSUME_EVENT;
		}
	}
	else if ( eventName === "wheeled" )
	{
		if ( arg < 0 )
		{
			var order = {};
			order.OrderType = dotaunitorder_t.DOTA_UNIT_ORDER_MOVE_TO_POSITION;
			order.Position = GameUI.GetScreenWorldPosition( GameUI.GetCursorPosition() );
			order.Queue = false;
			order.ShowEffects = false;
			Game.PrepareUnitOrders( order );
			return CONSUME_EVENT;		
		}
		else if ( arg > 0 )
		{
			var order = {};
			order.OrderType = dotaunitorder_t.DOTA_UNIT_ORDER_ATTACK_MOVE;
			order.Position = GameUI.GetScreenWorldPosition( GameUI.GetCursorPosition() );
			order.Queue = false;
			order.ShowEffects = false;
			Game.PrepareUnitOrders( order );
			return CONSUME_EVENT;		
		}
	}
	return CONTINUE_PROCESSING_EVENT;
} );
Category: Dota 2 Workshop Tools Category: Panorama