Viewcam Information and Editing
===============================
Version: 1.0
Date:    14 Dec 01
Site:    http://www.OrangeSmoothie.org
Contact: rhea@OrangeSmoothie.org

OSP最新的相关中文文本信息你可以在http://www.q3acn.com获得，
如果有问题请与cat@q3acn.com联系。

概况
--------
如果服务器能在找到适当的为当前地图定义的viewcam位置文件，那viewcam
则可以被激活。

viewcam定义文件命名格式为：

	viewcam-<mapname>.cfg

... 这里的<mapname>是q3dm1、q3dm2等。


当服务器启动时，默认的是自动在osp/cfg-viewcam路径下寻找viewcam定义
文件。你也可以通过修改"viewcam_directory"参数来改变viewcam定义文件
的目录。


创建viewcam定义文件
---------------------------------
1. 建立定义文件的工作很简单，而且有一定的乐趣。简单直接的方法是运行一个
   0.81或更高版本的OSP的Quake3 listen服务器。

2. 地图调入后，切换到旁观者模式（\team s）

3. 把"\snapshot"命令绑定在一个键上（我用的是"h"），比如

	\bind h snapshot

3a. 同时也可以绑定一些设置viewcam位置时用到的命令，以方便工作，比如：

	\bind f range
	\bind g vc_proximity
   
   具体作用参看以后的命令说明

4. 现在你可以在地图中来回穿梭，在最佳位置放置镜头，竟可能的让所有
   镜头能覆盖所有区域


5. 当你找到一个认为合适的位置时，按一下"g"键（我们已经把"vc_proximity"
   命令绑定在上面了）来观察和其他snapshots以及其他已经定义好的viewcam
   的距离。

   "vc_proximity"给出的只是直线距离。所以，信息可能是你现在位置距离
   墙另外一侧其他位置的，但是这种信息对你确定其他viewcam
   和你现在位置的镜头交迭范围很有帮助（镜头的半径范围是450个单位）

   这些信息都显示在所有snapshot的中央。

6. 在你要取得一个nsapshot前，按下"f"键（或者是你绑定了"range"命令的
   其他键），同时在你当前位置周围查看视角。
   
   range令会告诉你是否现在你准星视线在镜头范围内（如果在范围内则为
   黄色，否则为红色）。
 
   使用range命令，你可以看到镜头可以看到现在位置的周围的长度。注意，
   当你改变视角时，你可以通过按住range键来立即获得反馈，它会即时更
   新的。

6a.一旦你找到了合适的位置，按下你事前定义了snapshot的键。

6b.服务器将显示一串数字（在控制台上），就象这样：

	4 -269.920 -1493.019 333.001 37.512 -124.612

   这里第一个数字为整数（唯一性的位置标识符），其他为在此地图中的坐标
   数据。

7. 在地图中定义更多的"snapshots"，以便能覆盖整个地图。控制台信息中
   最左边的数字可以随snapshot增加而增加。

8. 全部完成后，在控制台输入：\condump <mapname>.cfg

   注意：为了预防，如果服务器不是一个专用服务器（dedicated server），
   只有一个玩家连入，那服务器会在games.log文件中，记录下所有的snapshots
   信息。

9. 退出quake3（或者调入其他地图来继续工作）

10. 用你喜欢的文本编辑软件（象wordpad），打开保存viewcam信息
    文件（在osp/目录下）

11. 删除你做的第一个snapshot信息前的所有其他杂乱信息，同时删除你做的
    最后一个snapshot后的其他杂乱信息。

12. 这样你应该得到一个类似下面的文件：

	0 -404.158 -458.847 607.734 38.677 -114.675
	1 -807.011 -840.523 351.869 55.042 158.214
	2 -1167.130 -277.282 345.887 77.217 133.132
	3 -1319.148 -747.830 674.927 47.390 36.337
	4 -1156.306 191.654 658.774 43.429 156.720
	5 -959.129 374.814 159.875 39.996 -29.927
	6 -331.580 -82.610 209.948 41.578 -142.125
	7 -7.374 -496.873 24.125 14.255 42.935
	8 -71.779 486.688 24.126 22.044 -95.043
	9 147.193 -834.934 156.112 51.081 -22.967
	10 228.905 -1061.497 435.306 53.987 -86.858
	11 462.476 -672.954 682.738 46.066 -155.138


13. 保存文件，同时改名为"viewcam-<mapname>.cfg"，将它移到cfg-viewcam/
    目录下（或者是你定义的其他保存viewcam定义文件的目录）

14. 以listen服务器形式进入quake3，调入你刚才制作viewcam定义文件的地图。

15. 输入"\viewcam", "\team viewcam" 或 "\team vc"

16. 输入"\vc_info"（当你切换到viewcam位置时，你将得到该点的信息）

17. 以跳跃键来切换到下一个viewcam位置，以下蹲键来切换到上一个viewcam
    位置。你自己在地图中时，视角是不动的，就象你做的snapshot。对比现在
    位置信息（通过\vc_info）和你刚才做的viewcam位置文件信息（这个工作
    要将quake3设置成窗口来完成）。信息应该完全相符。

18. 一切都合你要求后，就可以接着做其他地图的viewcam了


snapshot注意事项
--------------
- 镜头探测/跟踪范围为450单位，在一个开放的大区域中请注意这个范围，也许
  你需要好几个镜头才能涵盖整个区域（最好镜头范围之间能有些交迭）。用
  "range"命令来获得信息。

- 避免两个（或更多）镜头覆盖同一区域时，镜头交迭过大。这样可以避免当一个
  玩家在该区域移动时，镜头不自然的转换。

- 只要两个镜头视野不在同一条线上，它们可以被设置的距离较近。但要小心
  处理，这样虽然能做出一些好的视觉效果，但同样也能做出非常糟糕的镜头。

- 尽管设置低镜头可以在玩家经过时获得更多酷的效果，但最好（一般情况下）
  将镜头设置在玩家头顶的高位置，避免过低时可能出现玩家穿过镜头的情况。

- 静态镜头一般只能看到他们前面（大约120的视野）的行动。所以一个玩家在
  后面的动作会被镜头忽视。因此，当你在角落、天花板和外面的开放区域放置
  镜头时，要注意自己调整。

- 如果你想得到一个干净的一行行的当前snapshot的保存信息，只要输入：

	\snapshotdump

- 如果你做了一个不满意的snapshot，你只要在地图的snapshot定义文件中
  手工删除这行即可。

- 如果你发现了个死角或想加一些新的镜头位置，参照上面的步骤操作。但现
  在你只需要增加需要的snapshots。然后导出这些位置，再把这些位置剪贴
  到原来的位置定义文件即可，不要忘了把最左边的数字改成和其他位置不重
  复的数字。
  
- 如果要认真的制作viewcam的话，我推荐打开两个Q3窗口。当你打开第一个时，
  用它来运行类似"cfg-SinglePlayer/team.cfg"的设置，一旦调入了，切换到
  viewcam模式

  接着打开另一个quake3窗口，连入到第一个窗口（使用多人连线下的"Local Servers"）
  在这个窗口中，你可以在地图中巡游。

  这时第一个窗口处于viewcam，你可以看到你在第二个窗口中控制的玩家的行动，
  这样会便利的让你找出死角和镜头交迭处理的不好的地方。

  当然，你需要一个支持窗口模式的显卡（象TNT2）

- 这里有一个可选的在一个特定位置动态改变范围的viewcam位置的附加参数。
  比如，\snapshot命令可以导出的信息为：

	5 668.980 2338.872 173.705 42.709 -88.748

  镜头的每个位置在使用这个参数后可以增加范围：

	5 668.980 2338.872 173.705 42.709 -88.748 [length]

  下面这个例子就是将镜头范围从默认的450扩大到了900，你只要手工
  在原来这行上去填加即可：

	5 668.980 2338.872 173.705 42.709 -88.748 900

  这个参数在设置一个开放的大区域时很有用，这样可以避免镜头过多带来
  的混乱，或者是太多的快速的各镜头之间的转换。

  注意：不要指定范围为默认的450


viewcam命令：
-----------------
- 切换到viewcam模式：

	\viewcam
	\team viewcam
	\team vc
	\vc_follow	（允许viewcam跟踪一个玩家。你可以指定玩家的名字/代号
			  而不必通过在多个玩家中切换来寻找这个玩家）

	在跟踪模式时按下开火键
	在没有活动的玩家的自由状态时按下开火键


- viewcam位置信息：

	\vc_info	（给出当前viewcam位置信息）
	\vc_proximity	（给出最近的snapshot和viewcam位置信息）
	\range		（给出从当前位置到表面的范围）

- 其他
	\vc_free	（进入通过活动的viewcam来自动跟踪的模式）
	\snapshot	（获取一个当前位置的snapshot）
	\snapshotdump	（输出保存所有制作的snapshot）


- 客户端参数
	cg_followviewcam	 0 - 使viewcam默认为动态活动模式
				*1 - 将viewcam锁定在一个玩家身上，可以通过跳跃键或
				     \followprev 或 \follownext来切换到其他玩家。


- 手动循环切换viewcam位置：
	
	- 跳跃键为向前循环
	
	- 下蹲键为向后循环
	（只有当服务器上没有活动玩家时）