Tr3B wrote:I still need to find a way to expose the entityDef entity key value pairs to the Blender GUI.
I think that's wasteful/stupid, sorry. You should take the best from every software. For entity placement (differentiating from point entities/group entities) and entities linking, NetRadiant is the best. With Blender you would just try to mimic a well oiled mechanism that already works perfectly in NetRadiant.
SetUp
Export .objs from NetRadiant
Import Obj in Blender settings:
Make sure axis are set just like image above!
Blender grid space settings:
remember! a 128x128x128 cube will be 1.28x1.28x1.28! So objects now are perfectly in scale between Blender and NetRadiant and you can import/export/re-import/re-export objects without losing scale! That's cool!
Blender .obj export settings:
Important! Make sure scale and axis are set correctly. Also Objects a OBJ Groups is an important point!
So, imho, the best procedure FOR NORMAL STATIC MAPS (maps that are normally loaded as world) and if YOU USE A MODERN QUAKE ENGINE LIKE DP OR FTEQW is:
1) Create in blender the map structure, using uneven floors, vegetation, cracked and skew walls, dirty grounds.. in a word all the things YOU CAN'T DO in Radiant! Export it in models/whatever/level.obj
2) Create in Blender the hull cage structure, using only planes.
Follow this tutorial I made (it's useless to do same soup everywhere) thanks to gb and Spike. It explains how to export collision meshes in DP and FTE. They have a different approach but it works in both cases. It's useless to use cubes, because polycount increases a lot. Just remembet to check normals. They have to point inwards for floors. Export the collision mesh in models/whatever/level_collision.obj
3) In NetRadiant load both level.obj and level_collision.obj as misc model and PUT them BOTH at 0 0 0 in world space
4) Create a decent entities.ent file in netradiantfolder/mygamename.game/data where you specify all the entities by SIZE and COLOR (spend some time on this part, it's important to help you keep things under your control)
5) Place your point entities and group entities in your map and compile
imho, the best procedure FOR DYNAMIC MAPS (maps that are loaded just like models at runtime in game, for example in a realtime generated dungeon-like game) and if YOU USE A MODERN QUAKE ENGINE LIKE DP OR FTEQW is:
0) (optional) create in NetRadiant a map structure that reveals map bounds and (if needed) doors / exits of the map. Export it in your source folder (a folder not present in game folders structure) as level_blueprint.obj
1) Import level_blueprint.obj in Blender and start modelling your level with creativity. Export the level model in models/whatever/level.obj
2) create your hull cage using ONLY PURE CUBES with ONLY AND NOT UNDER 6 faces. You can stretch them a bit but do not exaggerate too much, just avoid to mantain box proportions or problems will occur. Export it in maps/level.map
3) Open map just created and select all (A keyword) and assign a transparent material that make collision, for example common/weapclip. Insert a misc_model of models/whatever/level.obj. Don't add entities in the map because they won't be read (
PLEEEASE Spike, make a feature that can read bsp entities directly from quakec setmodel command!
).
You can anyway bake lightmaps(yew!) if you need them(I didn't try, though).
4) Spawn ingame the map you just created
Code: Select all
void spawn_map()
{
precache_model("maps/level.bsp");
setmodel(self,"maps/level.bsp");
self.solid = SOLID_BSP;
}
In this way you can have different sectors of a dungeon, for example, dynamically loaded at runtime.
Hope it helps.