旧话重提……建筑修改编
本帖最后由 lanson 于 2011-3-3 15:39 编辑前言:建筑增加和建筑修改不同,增加是件很麻烦的事,很佩服老外在建筑修改时不厌其烦地每个建筑都做了修改,因为增加建筑所涉及的文本太多了。增加建筑我只知道一些理论,而且没有经过实践验证。正所谓条条大路通罗马 ,既然有简单的为何要用复杂的呢? 以下我先来说说简单的建筑替换,主要用这类办法。
一些要点看2楼
3楼是关于建筑增加等的一些理论和猜想,爱看不看
正文:嘛,我也是从柱子组前辈那里学来的,寒奔大人的威名当年可是老外也要甘拜下风{:5_155:}
简单说说原理,先解释一个词:LOD
LOD技术 Levels of Detail,意为多细节层次,LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。
明白这个后,原理就很好理解了,罗马的引擎就是采用这类多层次技术,不同距离所用的模型不同,把不同lod模型文件cas合成一类item的文件,便于游戏时统一运算。
这里先允许我引用寒大的关于建筑修改的一些话:
修改罗马的建筑的方法。
或许大家以前看过我发的帖子,关于三国mod的建筑预览。现就自己的心得和经验贡献出来,让大家分享,希望大家能发挥自己的特长,把更多的中华古典建筑加入到游戏中,共同营造更丰富的汉文化MOD。(希望版主加精加钱)
改建筑其实还是比较简单的,但增加建筑就比较麻烦了。现在只谈改建筑,因为罗马已有的建筑群足够多了,完全没有必要去增加。
1、安装3Dmax5.0或以上版本,然后运行插件,就是那个导入导出*.cas的插件。
2、用Xpak解压罗马packs文件夹下面的所有×.pak文件。这时就会在Rome - Total War\Data\ 下出现 “ITEMS”文件夹,里面全部是*.item文件。这个就是罗马所有的建筑模型。对应的贴图在Rome - Total War\Data\models_building\TEXTURES下,
3、用3dmax插件导入刚才的某个.item文件。我们可以在max中看见他是由一个组合的模型构成的。比如,,,........这个就是说明该建筑是由4个lod级别的模型构成的。有些建筑是2个,有些是3个lod。
4、很重要的一点,建筑模型的item文件不是由3dmax插件导出的,是由游戏自动生成的。所以我们只需要设定好对应的几个同文件名的cas文件即可。比如由4个lod级别构成的建筑模型我们就应该在Rome - Total War\Data\models_building\文件夹中生成4个cas文件。
举例,“aaa.item” ,那么对应4个cas文件名应该为 aaa_high.cas,aaa_med.cas,aaa_low.cas,aaa_lowest.cas.
5、我们只要在3dmax中正确设置好了这4个模型,就可以导出了生成这4个cas文件了。注意:_high代表最精细的建筑模型。_lowest最粗造的。
6、建立好这4个文件以后,删除ITEMS”文件夹中的aaa.item.然后运行游戏,你就会发现战场或城市里面的建筑被替换成的你的模型。
以上是寒大的方法,其实已经说得很清楚了,以下我再用实例来说明:
最简单的我用游戏中的城里的罗马石像roman_statue,基本上根据英文意思都能了解到这个item是属于什么模型的
你可以用寒大的方法先找到这个文件roman_statue.item,(pack文件在三国mod已经解开了,不用自己解)用max导入打开item,
你可以看到这个石像是由4个lod组成的,现在教你用更加一目了然的方法:打开descr_items.txt这个我给附件,是属于罗马1.6的,在descr_items.txt里查找roman_statue,你会找到这类:
type roman_statue
lod
max_distance 100.0
model_rigid roman_statue_high.cas
lod
max_distance 200.0
model_rigid roman_statue_med_high.cas
lod
max_distance 300.0
model_rigid roman_statue_med.cas
lod
max_distance 4000.0
model_rigid roman_statue_low.cas
看到这里你就知道这个石像分别由high、med_high、med、low,这4个cas组成
这里我先说说这里面词语的大致意思(按照我的理解)
type roman_statue ……………… 模型名字
lod………………可以无视
max_distance ……………… 就是在这个范围内的意思,数字100就是游戏用100个单位,我个人理解就是游戏的坐标单位
model_rigid………………模型路径
这里需要注意,如果如上述的没有路径就是默认在data/models_building里面比如bi新增加的有
model_rigid ../../bi/data/models_building/BI_roman_governors_palace_high.cas
这里其实不用改,(给你个descr_items.txt也就是方面查找而已,真正用的我后面说说。)cas命名时按照这几个名字,比如我现在要把石像改成水井,需要做4个对应的cas
roman_statue_high.cas
roman_statue_med_high.cas
roman_statue_med.cas
roman_statue_low.cas
按照石像命名就可以了
我以alex作为引擎为例子
然后把cas放在descr_items.txt指引的目录下,比如默认的data/models_building,如果你查到的是bi新增的bi/data/models_building/
记得贴图要放3处,(其实是两处,不过为了以后修改方便)
第一处data/models_building/textures或者bi/data/models_building/textures
第二处alexander/data/models_building/textures
第三处alexander/data/items/textures
就是说你用什么引擎,就必须在这个引擎下的models_building和items文件夹下有相应的贴图
然后把旧有的alexander/data/items/roman_statue.item删去,然后入游戏进入过去有石像的城市,你会发现items文件夹下生成一个新的roman_statue.item,城里的石像被封印在井里了!
本帖最后由 lanson 于 2011-3-3 14:56 编辑
这里我说几个要点:
1、做建筑时最好按照原版建筑的大小来做,特别是它的高形状,因为上面那类建筑替换没有对建筑的隐形部分修改,这个隐形部分(我这么称呼的)作用就是你拉近镜头时遇到这个部分会避开,不至于插入建筑内部,还有就是人物行走路径,建筑动作等。我自己做时也就是大约就可以了,毕竟懒得做的这么精细,所以镜头插入建筑那是常有的事,{:5_133:}说白了就是只是改了外形{:5_140:}
2、可能有部分童鞋想直接用修改item来做cas,如果成功了,恭喜你,反正我是用了item做成的cas,最后再生成item时变色了,原因不明~~~
3、不能导出cas,和树模一样,建筑只需要scene root,其他不用,不能带group,每个对象都要静态连接上,贴图可以多张,但一定要设置好。
4、假如uv乱了,和兵模一样方法,分离乱了的部分,把它打散
5、游戏生成的item最大约为2.1m,超出这个就错误了
6、模型里面不能有中文~~~
7、item生成要在游戏载入这个场景才能生成
8,城墙cas放置位置是data/models_building/models_walls
本帖最后由 lanson 于 2011-3-3 15:35 编辑
关于新建筑的添加方法,先说说原理,和树模一样,需要把原来的descr_items.db文件删去,根据descr_items.txt来生成,但是要是txt错误了,你就悲剧了,所以我很佩服老外~~~
我们先看看原版的descr_items.txt文件,打开它,有
;
; This file contains the item model linkages; it gets parsed on application
; startup but is not otherwise referred to. The data format is thus:
;
; ; indicates a comment ;-)
;
; type indicates a new model type, must be followed by id name string (phrase)
; model_rigid indicates a new model in the lod series, must be followed by file name with path and lod
; range in m (no range supplied means maximum range - last mode including sprite)
;
; all mesh model lods must be supplied in order, smallest distance (highest detail) first
;
; spot items
include di_spot_items.txt
include di_slot_fillers.txt
include di_wooden_walls.txt
include di_walls_roman.txt
include di_walls_greek.txt
include di_walls_eastern.txt
include di_walls_egyptian.txt
include di_walls_barbarian.txt
include di_nicks_roman_buildings.txt
include di_nicks_egyptian_buildings.txt
include di_nicks_greek_buildings.txt
include di_nicks_eastern_buildings.txt
include di_barbarian_buildings.txt
include di_wonders.txt
include di_foliage.txt
include di_kevins_buildings.txt
include di_bens_buildings.txt
include di_andrews_buildings.txt
include di_pauls_buildings.txt
include di_johns_buildings.txt
include di_joss_buildings.txt
include di_roads.txt
include di_animals.txt
include di_gates.txt
include di_ambient.txt
type scale_soldier
lod
max_distance 200
model_rigid scale_soldier_high.cas
type rubble_20x20
lod
max_distance 2000
model_rigid rubble.cas
type construction_site_48x32
lod
max_distance 4000
model_rigid construction_48x32_high.CAS
type construction_site_112x64
lod
max_distance 4000
model_rigid construction_112x64_high.CAS
type construction_site_160x128
lod
max_distance 4000
model_rigid construction_160x128_high.CAS
你会发现红字的部分你怎么找也找不到,因为ca保密了~~~~~~~~txt生成db后这些文件就没用了,所以~~~~~
这些di开头的文件位置就是data/descr_items文件夹下,因为删了~所以没有,所以要想增加建筑,你就需要补上di开头的这类txt,当然你可以改个名字,但是需要注意的是,当你决定改动文件名字时,那么对应的data/descr_building_battle里面的txt也就作废了,你得自己去做一个txt,比如我把descr_items.txt里面改成
include di_wall_sangguo.txt
type scale_soldier
lod
max_distance 200
model_rigid scale_soldier_high.cas
type rubble_20x20
lod
max_distance 2000
model_rigid rubble.cas
type construction_site_48x32
lod
max_distance 4000
model_rigid construction_48x32_high.CAS
type construction_site_112x64
lod
max_distance 4000
model_rigid construction_112x64_high.CAS
type construction_site_160x128
lod
max_distance 4000
model_rigid construction_160x128_high.CAS
那么在data/descr_building_battle里面就必须有dd_wall_sangguo.txt这个对应文件,dd文件就是修改战役建筑的属性,比如生命值什么的,我抽一段城墙文本
; Eastern town walls
eastern_town_gateway………………城镇的门
{
full_health 500……………………生命
localised_name gateway…………布局时的名字
level
{
min_health 1
battle_stats flammability_none impact_damage_low
item eastern_town_gateway………………引用的item
physical_info info_walls/eastern_town_gate_info.CAS…………
spot_fx eastern_town_gate_spot_fx.CAS…………………………嘛,这两个cas貌似就是它的实际作用模型,就是那些动作什么的,和item的外表不同
}
transition ; undamaged to collapsed………………倒塌时的模型参数设置,下面不是很懂了~~~~~~
{
duration 120
physical_switch 0
item eastern_town_gateway_collapse
{
0 enable
0 dust_anim 90 4 2 2 0 3
120 disable
}
item eastern_town_gateway_collapse_anim
{
0 enable
0 anim 0 0 6
120 disable
}
}
所以说,很麻烦,这个方法被我抛弃了~~~~~~~有简单的为何要用复杂的呢~~~~~~
或许护城河可以在这里实现~~~~~~~~~~~不过你们自己搞了~~~~~~~~{:5_136:}
继续保存到word,继续支持lanson造福群众 本帖最后由 cinyokun 于 2011-3-3 23:08 编辑
大部分暂时没看懂。先顶礼膜拜!兰松大神先!兰松万岁!大神万岁!
{:5_131:}先顶一下~顶完再细看!!!
页:
[1]