Jump to content

Terrain Mapping Ultrathread (For Terrain Builders)


Go to solution Solved by Langerd,

Recommended Posts

Posted

Edit Thread renamed and opened for all peoples to share and discusse they personal suggests, hints, tricks and procedure about the building of terrains into JK3\JK2 engine using Easygen or other terrain software generators.

 

 

Hello to all, i have learned to use Easygen and i make my first terrain, exporterd as map.

i open it with radiant but ...

first issue:

all textures i setted on easygen with palettes are missings.

second issue: after i build the map i get an error for missing pcx file. so i place on my build folder the pcx file of the palettes.

now the map is building. is just the terrain, the info_player_start and the skybox.

when i load the map, the engine told me this error and not loading the map.

What cause this error and how can i fix?

thanks for every answer.

 

@@Langerd

@@Szico VII

@@KENNITHH

 

  • Solution
Posted

Hello to all, i have learned to use Easygen and i make my first terrain, exporterd as map.

i open it with radiant but ...

first issue:

all textures i setted on easygen with palettes are missings.

second issue: after i build the map i get an error for missing pcx file. so i place on my build folder the pcx file of the palettes.

now the map is building. is just the terrain, the info_player_start and the skybox.

when i load the map, the engine told me this error and not loading the map.

What cause this error and how can i fix?

thanks for every answer.

 

@@Langerd

@@Szico VII

@@KENNITHH

Not sure because i am not using easygen...

 

I was trying to use it . The shaders are the key. Making terrain with easygen not only .. well create the terrain but You can also make blend textures (a smooth change of the texture from rock to the snow for example - this is creating in shaders).

The problem for me with this program is sometimes crappy final effect, a scale that i want to make and of course... a pain in the ass way to export it to the gtkradiant :S... There are tutorials on Jkhub:

 

https://jkhub.org/tutorials/article/63-multilayer-terrain-in-easygen/

 

https://jkhub.org/tutorials/article/101-terrain-creation-using-easygen/ - here is Szico's tutorial btw :P

Posted

Well, I used Easygen several times and there are many things I don't like about it, though if used properly, I am sure, it can make amazing results.

 

I had problems with it on several ocasions: 

1) there were too many brushes generated in easyGen for GtkRadiant and JA specifically.

2) the export of the maps caused using some entities, originally not in JA (something like that)

3) textures were used in the wrong way (different paths for Q3 and JA, easy fix).

4) I tried to blend more than 2 textures at once. E.g. you have sand texture (A), grass texture (B) and stone texture ©, and if all three are near (A+B+C), and a blending mode is used for all of them, the map might not work properly. I think it can be checked if you see a black triangle on the surface in easygen. It should be A+B, A+C afar and B+C farther from other blends.

 

Depending on what you want to achieve, you might want to clean all the map inside the Radiant. 

Asgarath83 likes this
Posted

This morning i followed Szico tutorial and an italian tutorial about easygen. i think italian tutorial was pretty incomplete because i missed up many things.

Now i followed this tutorial:

https://jkhub.org/tutorials/article/63-multilayer-terrain-in-easygen/

 

It's works like a charm! thanks very much for link, @@Langerd

but yes. it's really a pain in the ass. easygen is not much user friendly as tool. :\ the baddest part is to paint with palettes the terrain.

>.< and build the shader and export correctley.

here my errors:

- wrong terrain shader and caulk (using common instead of system, thanks easygen >.< )

- wrong exporting template. you're pretty right @@kwenga. thanks so much because i got the error by that.

- a worldpawn full of funny metashader parameter. and i had cleaned up the worldspawn.

now is perfect!!!

what i am trying to do?

i am trying to do a mod about legacy of kain. and i am begin to do the wasteland on 3d.

i salved all game maps of the oldest 2d game blood omen.

how make my first terrain?

i wanna reproduce a specific area of nosgoth in 3d . and i make that.

- i take the blood omen eagle map of 2D of the area (is the bastion when kain killed moebius in the second timeline of lok(

- i edited with paint shop pro removing the building sprite of the castle.

- i converted it into an heightmap with white, black, -grey colors. and i recolorize the bmp image  for making white the montain, grey the forest and black the path way. (so is down a little canyon)

- processed heightmap in easygen so i converted a map of an oldest 2d game... into a 3d terrain that exactly reproduce this territory.

- alphamapping and palettes.

- exporting. (and here i make a large amount of errors. )

now it's all okay! thanks so much mens!

Now i can build an entire world!

:D


@@NumberWan, pretty much right. I had also fixed a lot of black triangles. and it's not much easy to fix it. >.<

Langerd likes this
Posted

Asgarath83 remember - If Your terrain is too big or something You can export a the terrain and remove the places where You dont want them ;)

Also for making map looking bigger You can make skybox cam with the terrain.

Posted

Asgarath83 remember - If Your terrain is too big or something You can export a the terrain and remove the places where You dont want them ;)

 

Also for making map looking bigger You can make skybox cam with the terrain.

 

LOL the first time i failed to loading on radiant because really i make an heightmap with TOOO many pixels XD damn, it was huge! 200 Megabyte of map file. radiant was imploding.

the second time scaling was okay, but i get the error.

third time is worked.

well, i suppose i can cut map in two sublevels if the area is very too much huge for a single map.

yes, a skybox cam with a cam path really can make some wonderful flying cinematic. and vampires move into bat forms, so i think i will use for theyr winged travels! Thanks for idea!!! D:

Posted

It is impossible to remove the brushes, created in Easygen simply by pressing delete button/backspace. You'll need to "ungroup entity" (select the unimportant brushes only) and delete after that.

 

This whole aspect of Easygen is very interresting. It makes the whole terrain an entity of special kind, I would say, which works in a peculiar way. I wasn't able to figure out, how many files or things are actually inlvoved in it. But I am sure, that Easygen does the blending aspect as the other way: can't remember the names, but you put Opacity brushes on the borders between brushes of different textures (e,g. sand and grass), thus after compilation in Radiant 1.6. for instance you see a smooth change in the terrain while playing. Easygen does the same effect without these brushes on border.

Asgarath83 likes this
Posted

It is possible to use easygen for creating some rocks, cliffs, etc, but whole shader gets strange shadows when brushes are rotated. You're simply forced to use normal textures, but still - it can create really nice effects. Shadows are obvious downside of this, because you can easily see all triangles, if you don't tweak with light angle, ambient or other stuff. However, it's still far more easier and faster than doing it by hand, stretching triangle after triangle. :P

I still think it might be more useful than it is right now. Only working with.shader file is still painful and limits most of my ideas.

 

 

OSt6Wjv.jpg

 

NumberWan, Asgarath83 and Langerd like this
Posted

I love when mapping , modding to Jk3 has no one method that works 100% right. There are always big downsides but we choose those that we like the most (well .. it is mostly like that in .. many things but jk has rly serious problems with this .. many times)

The best program that i use for modding to jk3 is .. Gtkradiant. For me at least :P Blender is amazing program too but radiant is the first that i met and learnt.


It is possible to use easygen for creating some rocks, cliffs, etc, but whole shader gets strange shadows when brushes are rotated. You're simply forced to use normal textures, but still - it can create really nice effects. Shadows are obvious downside of this, because you can easily see all triangles, if you don't tweak with light angle, ambient or other stuff. However, it's still far more easier and faster than doing it by hand, stretching triangle after triangle. :P

I still think it might be more useful than it is right now. Only working with.shader file is still painful and limits most of my ideas.

 

 

<script pagespeed_no_defer="">//=d.offsetWidth&&0>=d.offsetHeight)a=!1;else{c=d.getBoundingClientRect();var f=document.body;a=c.top+("pageYOffset"in window? window.pageYOffset:(document.documentElement||f.parentNode||f).scrollTop);c=c.left+("pageXOffset"in window?window.pageXOffset:(document.documentElement||f.parentNode||f).scrollLeft);f=a.toString()+","+c;b.b.hasOwnProperty(f)?a=!1:(b.b[f]=!0,a=a<=b.e.height&&c<=b.e.width)}a&&(b.a.push(e),b.d[e]=!0)};p.prototype.checkImageForCriticality=function(b){b.getBoundingClientRect&&q(this,b)};h("pagespeed.CriticalImages.checkImageForCriticality",function(b){n.checkImageForCriticality(b)}); h("pagespeed.CriticalImages.checkCriticalImages",function(){r(n)}); var r=function(b){b.b={};for(var d=["IMG","INPUT"],a=[],c=0;c=a.length+e.length&&(a+=e)}b.g&&(e="&rd="+encodeURIComponent(JSON.stringify(s())),131072>=a.length+e.length&&(a+=e),d=!0);t=a;if(d){c=b.f;b=b.h;var f; if(window.XMLHttpRequest)f=new XMLHttpRequest;else if(window.ActiveXObject)try{f=new ActiveXObject("Msxml2.XMLHTTP")}catch(k){try{f=new ActiveXObject("Microsoft.XMLHTTP")}catch(u){}}f&&(f.open("POST",c+(-1==c.indexOf("?")?"?":"&")+"url="+encodeURIComponent(b)),f.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),f.send(a))}}},s=function(){var b={},d=document.getElementsByTagName("IMG");if(0==d.length)return{};var a=d[0];if(!("naturalWidth"in a&&"naturalHeight"in a))return{};for(var c= 0;a=d[c];++c){var e=a.getAttribute("pagespeed_url_hash");e&&(!(e in b)&&0=b[e].k&&a.height>=b[e].j)&&(b[e]={rw:a.width,rh:a.height,ow:a.naturalWidth,oh:a.naturalHeight})}return b},t="";h("pagespeed.CriticalImages.getBeaconData",function(){return t});h("pagespeed.CriticalImages.Run",function(b,d,a,c,e,f){var k=new p(b,d,a,e,f);n=k;c&&m(function(){window.setTimeout(function(){r(k)},0)})});})(); pagespeed.CriticalImages.Run('/mod_pagespeed_beacon','https://jkhub.org/index.php?s=7cac308397ca16bec452fcf69984a689&app=forums&module=ajax§ion=topics&do=quote&t=7459&p=106556&md5check=ecba2a4d3033837a868480b442547b35&isRte=1,XJjZaj8buz,true,false,aJx_pF-fJp4'); //]]></script>OSt6Wjv.jpg

&&0

also.. Amazin terrain OqO

Posted

Shadows are obvious downside of this, because you can easily see all triangles, if you don't tweak with light angle, ambient or other stuff.

 

Some Phong shader black magic should solve that.

NumberWan and Langerd like this
Posted

Some Phong shader black magic should solve that.

Can you specify that? You know, translating magic to more down-to-earth language? Are you talking about q3map_shadeAngle or something different? I would gladly check that out and see how does it works in this case.

Posted

Can you specify that? You know, translating magic to more down-to-earth language? Are you talking about q3map_shadeAngle or something different? I would gladly check that out and see how does it works in this case.

 

Exactly that. q3map_shadeAngle <angle> will create a Phong shading on the surface where the texture is applied.

 

http://q3map2.robotrenegade.com/docs/shader_manual/q3map-global-directives.html#q3map_shadeAngle

 

As far as I know, the only downside of this technique is that the shadows projected onto that surface don't look very precise.

kwenga likes this
Posted

It is possible to use easygen for creating some rocks, cliffs, etc, but whole shader gets strange shadows when brushes are rotated. You're simply forced to use normal textures, but still - it can create really nice effects. Shadows are obvious downside of this, because you can easily see all triangles, if you don't tweak with light angle, ambient or other stuff. However, it's still far more easier and faster than doing it by hand, stretching triangle after triangle. :P

I still think it might be more useful than it is right now. Only working with.shader file is still painful and limits most of my ideas.

 

 

<script pagespeed_no_defer="">//=d.offsetWidth&&0>=d.offsetHeight)a=!1;else{c=d.getBoundingClientRect();var f=document.body;a=c.top+("pageYOffset"in window? window.pageYOffset:(document.documentElement||f.parentNode||f).scrollTop);c=c.left+("pageXOffset"in window?window.pageXOffset:(document.documentElement||f.parentNode||f).scrollLeft);f=a.toString()+","+c;b.b.hasOwnProperty(f)?a=!1:(b.b[f]=!0,a=a<=b.e.height&&c<=b.e.width)}a&&(b.a.push(e),b.d[e]=!0)};p.prototype.checkImageForCriticality=function(b){b.getBoundingClientRect&&q(this,b)};h("pagespeed.CriticalImages.checkImageForCriticality",function(b){n.checkImageForCriticality(b)}); h("pagespeed.CriticalImages.checkCriticalImages",function(){r(n)}); var r=function(b){b.b={};for(var d=["IMG","INPUT"],a=[],c=0;c=a.length+e.length&&(a+=e)}b.g&&(e="&rd="+encodeURIComponent(JSON.stringify(s())),131072>=a.length+e.length&&(a+=e),d=!0);t=a;if(d){c=b.f;b=b.h;var f; if(window.XMLHttpRequest)f=new XMLHttpRequest;else if(window.ActiveXObject)try{f=new ActiveXObject("Msxml2.XMLHTTP")}catch(k){try{f=new ActiveXObject("Microsoft.XMLHTTP")}catch(u){}}f&&(f.open("POST",c+(-1==c.indexOf("?")?"?":"&")+"url="+encodeURIComponent(b)),f.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),f.send(a))}}},s=function(){var b={},d=document.getElementsByTagName("IMG");if(0==d.length)return{};var a=d[0];if(!("naturalWidth"in a&&"naturalHeight"in a))return{};for(var c= 0;a=d[c];++c){var e=a.getAttribute("pagespeed_url_hash");e&&(!(e in b)&&0=b[e].k&&a.height>=b[e].j)&&(b[e]={rw:a.width,rh:a.height,ow:a.naturalWidth,oh:a.naturalHeight})}return b},t="";h("pagespeed.CriticalImages.getBeaconData",function(){return t});h("pagespeed.CriticalImages.Run",function(b,d,a,c,e,f){var k=new p(b,d,a,e,f);n=k;c&&m(function(){window.setTimeout(function(){r(k)},0)})});})(); pagespeed.CriticalImages.Run('/mod_pagespeed_beacon','https://jkhub.org/index.php?s=dc713b947c19e0a0622a2fc82440d1f1&app=forums&module=ajax§ion=topics&do=quote&t=7459&p=106556&md5check=d87983f0d9f6ad54436287f405ba0e28&isRte=1,XJjZaj8buz,true,false,FyeK52Xbn6U'); //]]></script>OSt6Wjv.jpg

 

 

 

OoO

*jaws fall out. *

 

Man, can you share this map? it's really amazing T_T

 

I like this thread. I will read all your comment, guys. sure i can learn many things. i am really newbie with terrain tecniques.

Posted

@Asgarath83

You might find it interesting, that even the developers of JA didn't like the terrain technology in this game, and used various things to trick or get an alternative. In Tatooine levels, as well as Vjun and a few more they don't make all the terrain in GtkRadiant or EasyGen. They simply put various kinds of md3 rocks, made in other programs like 3Dsmax. The method is far easier, but has its own traps, unlike classic terrain making.

 

I was puzzled with what they did with t2_trip.bsp. It uses what seems to be an EasyGen terrain, made fully out of brushes. However the structure of the triangles there is different. Have a look on these two pictures. The first one is the terrain of different heights, which I generated in GtkRadiant. The second one is what can be seen in the swoop bike chase map, which includes canyons and mountains. 

 

terrain1_zpsyewd7bjp.png

terrain2_zps6bhkwvi1.png

 

I tried to understand that until I tried the "decimate" option in gtkgensurf in Radiant. It allows to produce a terrain, which consists of triangles of different sizes. I guess, it can help reduce the number of brushes per map, thus this makes it a bit better than Easygen (I can't recall this option there).

 

Years ago one mapper advised me to use an alternative to vertex, if changing the shape of the hill. Can't remember the hotkey in gtkradiant though.

Asgarath83 likes this
Posted

Additionally, there's that weird terrain entity in Radiant, which, from the description, seems to automatically generate a terrain from a heightmap from a single brush.

NOVEHDMG - don't damage vehicles upon impact with this terrain

Terrain entity
It will stretch to the full height of the brush

numPatches - integer number of patches to split the terrain brush into (default 200)
terxels - integer number of terxels on a patch side (default 4) (2 <= count <= 8)
seed - integer seed for random terrain generation (default 0)
textureScale - float scale of texture (default 0.005)
heightmap - name of heightmap data image to use, located in heightmaps/*.png. (must be PNG format)
terrainDef - defines how the game textures the terrain (file is base/ext_data/rmg/*.terrain - default is grassyhills)
instanceDef - defines which bsp instances appear
miscentDef - defines which client models spawn on the terrain (file is base/ext_data/rmg/*.miscents)
densityMap - how dense the client models are packed

Never really understood how it actually works or how to get it working at all.

Posted

@@NumberWan so there is a way on radiant for decimate terrains, used for t2_trip. this map has ever intrigued me for the big lenght and complexity of terrain. seem very over the JK3 engine possibility. it's simply a terrain imported with easygen and decimated.

pretty interessing man, pretty interessing. ^^

if you remember also, if in radiant there is some way for edit terrain structure after i load the map this can be niceful. i have some cliffs that i want to make more heighter and i not want to remake all with easygen. also in easygen i got some big trouble to move the vertexes of the cliff imported with an heighmap with mouse. it move on modifier menu only vertex by vertex. the result of this morning job was not much good : the cliffs get spikes as triangles. at this point  i think i will add some brushes on the top and i model for making the ridge of a snowed plateau on the edge of the map. i need to understand better how i can edit and morph a terrain structure after i import the heightmap. >.<

 

the other question i get it's that: on radiant i see the terrain with the caulk shader for all his structure, covered by system/terrain shader on his surfaces, because i need to place misc_model of a forest and a castle into the plains of the map, i need to now how can i see on radiant the textures applied on terrain.shader, so i can place the trees into the terrain cover by dark green forest leaves and the battlements and towers into the terrain with the more light grass.  (on JKA i see the terrain textures in perfect way, on radiant i see all terrain with terrain shader of system.)

thanks for the answer.

 

@@Ramikad yes, i see this feature on radiant, but i never used it so i  not know if works, too. >.<

Posted

For me the best looking terrain from whole Jk3 was the beginning in the t2_rancor map.

d64a206dd264a2ece41e6b9aaa7d627a.jpg
3bc70436a8afaf7b501205313d2766d7.jpg
0fbda4641cd7c5290f7a3e755ff94034.jpg

This was made with easygen i think because i found in the past some jk3 Sp maps that where in the .map format. The mountains use terrain texture.

d80c85ad05fd4394cfdd57584c40891c.jpg

Well but look on this pic (this with the map in the gtkradiant) .. there are no rocks. Why? Because they are misc_model_static...

For me ... Never use that for terrain. Because misc_model_static is just model. It is not based like misc_model.. These models doesnt catch the light . Misc_models catch light but they work in diffrent way and they take more memory and time to compile. But look of the shading of this rock..

a31fd2f9dce5e8476f0758222f79490e.jpg

It looks horrible...

Posted

These models doesnt catch the light.&&0

 

_cs 1 and _rs 1, keys and values on the misc_model_static, respectively to cast shadows and receive shadows.

NumberWan likes this
Posted

_cs 1 and _rs 1, keys and values on the misc_model_static, respectively to cast shadows and receive shadows.

Hmm but they work with the normal enity light? Maybe it is because of the texture but this rock model just look rly out of place

Posted

Hmm but they work with the normal enity light? Maybe it is because of the texture but this rock model just look rly out of place

 

Apparently those specific rocks aren't receiving any shadows, but only casting it.

Posted

Hmm but they work with the normal enity light? Maybe it is because of the texture but this rock model just look rly out of place

If you are not satisfied with your model, you can always retexture it, using _remap key.

 

https://en.wikibooks.org/wiki/GtkRadiant/Model_Tricks

 

Edit: Can we rename this to terrain mapping ultrathread (since we drifted away from @@Asgarath83 questions) and move it to "General Modding Discussions"?

Langerd likes this
Posted

If you are not satisfied with your model, you can always retexture it, using _remap key.

 

https://en.wikibooks.org/wiki/GtkRadiant/Model_Tricks

 

Edit: Can we rename this to terrain mapping ultrathread (since we drifted away from @@Asgarath83 questions) and move it to "General Modding Discussions"?

 

Done! But for changing thread sections, contact a moderator.

 

Otherwise, someone can answer to my question? how can i see on radiant instead of the system/terrain shader, the specific terrain texture of each triangle? i need to work with landscape for placing misc_models and i need to see if i place it on a grass or into a road or rocky surface.

Posted

Done! But for changing thread sections, contact a moderator.

 

Otherwise, someone can answer to my question? how can i see on radiant instead of the system/terrain shader, the specific terrain texture of each triangle? i need to work with landscape for placing misc_models and i need to see if i place it on a grass or into a road or rocky surface.

 

I'm not sure if it's even possible, since your terrain is covered by huuuuge shader. It's not "printed" on perticular triangles, it's more reference to .prt or .srf file (cannot remember right now, basically it's not in the Radiant itself). My advice - use some sort of references. For example - place some posts or blocks on your map in even distances between eachother. Compile your map, use high cull distance, take screenshot from far distance and use it as your major reference. Or just leave your game running, minimize it and check it when needed. Kinda sloppy method, but I can't see any alternatives.

 

Edit: Lol, I was joking about that title. Ok, let it be ultrathread then! We should feel superior.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...