[WIP] Planet Generator Tool

The place to discuss scripting and game modifications for X4: Foundations.

Moderators: Moderators for English X Forum, Scripting / Modding Moderators

Post Reply
tomchk
Posts: 1294
Joined: Mon, 26. Jan 15, 19:55
x4

[WIP] Planet Generator Tool

Post by tomchk » Wed, 20. Oct 21, 16:24

X4 has a great shader system for planets that allows very easy randomization, and I finally made a "procedural generator" for planets in XSLT (with a bit of Python for tiny mesh edits). This is in very early stages and will do much more over time, such as create atmospheres, aurora, hopefully orbits, and so on. I thought some folks here might like to see this as well, so here is a quick showcase of some new planets!
https://www.youtube.com/watch?v=8ZdlOQbYVyM
Care to see what I've been creating? https://www.youtube.com/user/ytubrute

kuertee
EGOSOFT
EGOSOFT
Posts: 789
Joined: Sun, 14. Dec 03, 13:05
x4

Re: [WIP] Planet Generator Tool

Post by kuertee » Thu, 21. Oct 21, 04:13

nice. i was re-watching your old videos, particularly this planetary atmosphere flight:
https://www.youtube.com/watch?v=PJrGCLmrjtM

and it got me thinking.
how close to planets can we build stations?
can we build stations in a planet's atmosphere?

i've not done any of the new terraforming missions, so i don't know if that allows us to build stations in a planet's atmosphere.
Mods: RPG: Reputations and Professions, Social Standings and Citizenships, Crime has Consequences, Alternatives to Death. Missions/NPCs: Emergent Missions, NPC Reactions, Mod Parts Trader, High-sec Rooms are Locked, Hacking Outcomes, More Generic Missions, Waypoint Fields for Deployment. Others: Auto-cam, Friendly Fire Tweaks, Teleport From Transporter Room, Wear and Tear. QoL: Trade Analytics, Loot Mining, Ship Scanner, Signal Leak Hunter, Station Scanner, Surface Element Targeting, etc.

tomchk
Posts: 1294
Joined: Mon, 26. Jan 15, 19:55
x4

Re: [WIP] Planet Generator Tool

Post by tomchk » Thu, 21. Oct 21, 07:23

kuertee wrote:
Thu, 21. Oct 21, 04:13
nice. i was re-watching your old videos, particularly this planetary atmosphere flight:
https://www.youtube.com/watch?v=PJrGCLmrjtM

and it got me thinking.
how close to planets can we build stations?
can we build stations in a planet's atmosphere?

i've not done any of the new terraforming missions, so i don't know if that allows us to build stations in a planet's atmosphere.
Well I believe the default parameters make any ship explode if that close to a X4 planet. It can be done with a simple mod, and collision mesh changes may also do the trick (but that's much harder if modding anyways). It was done in XR very close to the "surface" because that surface is "fake"--not the actual planet but an extra part on top. I'm sure we can do without that these days so long as that level of detail isn't expected. I don't think any terraforming missions allow atmospheric stations, but we really need them!
Care to see what I've been creating? https://www.youtube.com/user/ytubrute

Mystershow
Posts: 89
Joined: Tue, 11. Feb 20, 18:56
x4

Re: [WIP] Planet Generator Tool

Post by Mystershow » Thu, 21. Oct 21, 21:19

Impressive as always !

I'm really curious to where it could lead.

I read that it's a bit of python but is it mostly XML for the rest ?

Is it quite like creating new sectors ?

tomchk
Posts: 1294
Joined: Mon, 26. Jan 15, 19:55
x4

Re: [WIP] Planet Generator Tool

Post by tomchk » Thu, 21. Oct 21, 22:27

Mystershow wrote:
Thu, 21. Oct 21, 21:19
Impressive as always !

I'm really curious to where it could lead.

I read that it's a bit of python but is it mostly XML for the rest ?

Is it quite like creating new sectors ?
Thanks! Yeah honestly the Python part is just for preparing the meshes (doing binary edits to replace material references, which cannot be changed in the XML). It is almost entirely done with XSLT for major speed, which is essentially XML with for-loops and other powerful generation/editing abilities. Check my tiny mod here for a very simple example: https://www.nexusmods.com/xrebirth/mods/550
Generating these planets now is even easier than creating sectors (which I also automate with XSLT). Once the material refs in the meshes are ready, all you must do is randomize the planet material within proper limits. Then of course you need to place the planet, which is normally done in the Cluster_ component file. Make sense? All this could be done manually, of course, but that would take far, far longer.
This could lead to a lot. I just got orbits working, but those are much harder to change. Let me know if you have specific ideas. First I expect to prepare it for use on this tool's output, but it could be used to auto-generate new planets in existing sectors, etc. https://github.com/Celludriel/X4_Univer ... tion_Tool/
Care to see what I've been creating? https://www.youtube.com/user/ytubrute

Mystershow
Posts: 89
Joined: Tue, 11. Feb 20, 18:56
x4

Re: [WIP] Planet Generator Tool

Post by Mystershow » Fri, 22. Oct 21, 20:28

I see, I've took a look at the files from "XPANed Sectors Advanced" mod because I've wanted to create my own sector.

I wanted to remove some gas clouds ans add some shooting star (like in Rhys's Defiance).

I've specially wanted to create a feeling I had back in X3 on the way to Kingdom End.

Sectors fill with pirates and really oppressive, leading to a dark and quiet sector with a few boron station and ending in Kingdom End. It was such a relief to be there after all that.


Editing files isn't that much work, I've redone some mods to my taste (Recruitment Service Extended for example), but to understand what each line means and what they do or look like in game is.

Glad to know it can be done easier an quickier ^^


I really like the environnment in X:R, it was really immersive, I remember seeing a video about someone editing the highway path by xml to make it like in X:R.


For orbit, Radiant Heaven was really nice and a change from space.


For ideas, I'll think about it, there are certainly some really nice possibility like having multiple moons around a planet

Realspace
Posts: 1342
Joined: Wed, 15. Nov 06, 10:21
x4

Re: [WIP] Planet Generator Tool

Post by Realspace » Fri, 5. Nov 21, 12:38

I am very interested in your work. I edited many planets in my mod but it was a terribly long work of trial and error. Despite the engine's huge potential I am quite disappointed by how the vanilla planets look and how the systems are made, a step back from Rebirth (which was ok despite at a very small scale). I stopped my modding because of how long it takes to manually edit the xml. Was waiting for when EGO releases some tool as a planet editor or a galaxy editor. Hope I can use your editor before.

tomchk
Posts: 1294
Joined: Mon, 26. Jan 15, 19:55
x4

Re: [WIP] Planet Generator Tool

Post by tomchk » Fri, 5. Nov 21, 17:10

Realspace wrote:
Fri, 5. Nov 21, 12:38
I am very interested in your work. I edited many planets in my mod but it was a terribly long work of trial and error. Despite the engine's huge potential I am quite disappointed by how the vanilla planets look and how the systems are made, a step back from Rebirth (which was ok despite at a very small scale). I stopped my modding because of how long it takes to manually edit the xml. Was waiting for when EGO releases some tool as a planet editor or a galaxy editor. Hope I can use your editor before.
Great--I recognize your name! :) I am still working on this and will likely port to a blender addon in python. Does that sound easily usable to you? You wouldn't need blender or python experience, although I suspect you have it! XSLT is the best for XML-focused work, but it's not nearly as good as python for randomization, and with python I can just create an addon that's a button click for users.

Egosoft is working on official tools, but I'm not sure they'll make anything quite like this tool. This is for outputting any number of planets with random looks (the planet shader system in X4 makes generating these so much easier) and placing them in a cluster, possibly with orbits if I finish my limited animation generator! This does sound quite handy for saving you lots of time. :)
Care to see what I've been creating? https://www.youtube.com/user/ytubrute

Mystershow
Posts: 89
Joined: Tue, 11. Feb 20, 18:56
x4

Re: [WIP] Planet Generator Tool

Post by Mystershow » Fri, 5. Nov 21, 22:00

So much potential from this thread :D

tomchk
Posts: 1294
Joined: Mon, 26. Jan 15, 19:55
x4

Re: [WIP] Planet Generator Tool

Post by tomchk » Sun, 7. Nov 21, 16:26

I’ll post separately about this when I can, but I just made a new animation from scratch in blender and my new scripts worked to export it to the game. Kind of a big deal. 😉
Care to see what I've been creating? https://www.youtube.com/user/ytubrute

kuertee
EGOSOFT
EGOSOFT
Posts: 789
Joined: Sun, 14. Dec 03, 13:05
x4

Re: [WIP] Planet Generator Tool

Post by kuertee » Sun, 7. Nov 21, 17:29

tomchk wrote:
Sun, 7. Nov 21, 16:26
I’ll post separately about this when I can, but I just made a new animation from scratch in blender and my new scripts worked to export it to the game. Kind of a big deal. 😉
wow! congrats! have been scanning through your discord conversations. even if i understood only 0.5% of them, i knew you guys were doing something special.
Mods: RPG: Reputations and Professions, Social Standings and Citizenships, Crime has Consequences, Alternatives to Death. Missions/NPCs: Emergent Missions, NPC Reactions, Mod Parts Trader, High-sec Rooms are Locked, Hacking Outcomes, More Generic Missions, Waypoint Fields for Deployment. Others: Auto-cam, Friendly Fire Tweaks, Teleport From Transporter Room, Wear and Tear. QoL: Trade Analytics, Loot Mining, Ship Scanner, Signal Leak Hunter, Station Scanner, Surface Element Targeting, etc.

User avatar
Shuulo
Posts: 1629
Joined: Mon, 14. Apr 08, 17:03
x4

Re: [WIP] Planet Generator Tool

Post by Shuulo » Mon, 8. Nov 21, 02:17

tomchk wrote:
Sun, 7. Nov 21, 16:26
I’ll post separately about this when I can, but I just made a new animation from scratch in blender and my new scripts worked to export it to the game. Kind of a big deal. 😉
we need a good step-by-step guide for those of us who are bad with python and other stuff like that :)
congrats in finally breaking this thing, can be a big push for mods with proper tutorial

tomchk
Posts: 1294
Joined: Mon, 26. Jan 15, 19:55
x4

Re: [WIP] Planet Generator Tool

Post by tomchk » Mon, 8. Nov 21, 14:40

Shuulo wrote:
Mon, 8. Nov 21, 02:17
tomchk wrote:
Sun, 7. Nov 21, 16:26
I’ll post separately about this when I can, but I just made a new animation from scratch in blender and my new scripts worked to export it to the game. Kind of a big deal. 😉
we need a good step-by-step guide for those of us who are bad with python and other stuff like that :)
congrats in finally breaking this thing, can be a big push for mods with proper tutorial
Just let me know some ways you want to use it and I will explain. I may split up the few buttons a bit more also. The last two are the ones to press, in order, if you just want to test exporting a blender animation to ani. I assume you’ll already have the part name set as appropriate—that gets added to the output. Then the output is put in your target folder with a generic name for now.
Care to see what I've been creating? https://www.youtube.com/user/ytubrute

Realspace
Posts: 1342
Joined: Wed, 15. Nov 06, 10:21
x4

Re: [WIP] Planet Generator Tool

Post by Realspace » Wed, 16. Mar 22, 16:48

tomchk wrote:
Fri, 5. Nov 21, 17:10
Realspace wrote:
Fri, 5. Nov 21, 12:38
I am very interested in your work. I edited many planets in my mod but it was a terribly long work of trial and error. Despite the engine's huge potential I am quite disappointed by how the vanilla planets look and how the systems are made, a step back from Rebirth (which was ok despite at a very small scale). I stopped my modding because of how long it takes to manually edit the xml. Was waiting for when EGO releases some tool as a planet editor or a galaxy editor. Hope I can use your editor before.
Great--I recognize your name! :) I am still working on this and will likely port to a blender addon in python. Does that sound easily usable to you? You wouldn't need blender or python experience, although I suspect you have it! XSLT is the best for XML-focused work, but it's not nearly as good as python for randomization, and with python I can just create an addon that's a button click for users.

Egosoft is working on official tools, but I'm not sure they'll make anything quite like this tool. This is for outputting any number of planets with random looks (the planet shader system in X4 makes generating these so much easier) and placing them in a cluster, possibly with orbits if I finish my limited animation generator! This does sound quite handy for saving you lots of time. :)
Wow, that would be great. I've started modding again after 5.0 is out. I love this game but again the simulation aspect is so UNIMMERSIVE. I've almost completed a better ship's behaviour, more inertia and less "instant" accelerations. But planets remain very disappointing. Firstly in their aspect, they are a step back from my modded X3 FL. The way they are generated is good but the engine lacks another layer to look ok, it uses normal maps to create the details. You definetly feel they are fake, just by look. I could achieve better illlusion of planets in X3 by just using overlayed mapped diff textures. Editing sectors is another thing I am doing and have seen f.i. in Jupiter there are orbiting moons. There was a similar example in Rebirth's omicron lyra, but it was only one or two moons not all. Orbiting planets would be a great additional illusion.
The question...can I use the tool to only look planets in Blender and edit them? I have to load the game after each modification I do, this is terribly... terribly time consuming

tomchk
Posts: 1294
Joined: Mon, 26. Jan 15, 19:55
x4

Re: [WIP] Planet Generator Tool

Post by tomchk » Thu, 17. Mar 22, 16:07

Realspace wrote:
Wed, 16. Mar 22, 16:48
tomchk wrote:
Fri, 5. Nov 21, 17:10
Realspace wrote:
Fri, 5. Nov 21, 12:38
I am very interested in your work. I edited many planets in my mod but it was a terribly long work of trial and error. Despite the engine's huge potential I am quite disappointed by how the vanilla planets look and how the systems are made, a step back from Rebirth (which was ok despite at a very small scale). I stopped my modding because of how long it takes to manually edit the xml. Was waiting for when EGO releases some tool as a planet editor or a galaxy editor. Hope I can use your editor before.
Great--I recognize your name! :) I am still working on this and will likely port to a blender addon in python. Does that sound easily usable to you? You wouldn't need blender or python experience, although I suspect you have it! XSLT is the best for XML-focused work, but it's not nearly as good as python for randomization, and with python I can just create an addon that's a button click for users.
Wow, that would be great. I've started modding again after 5.0 is out. I love this game but again the simulation aspect is so UNIMMERSIVE. I've almost completed a better ship's behaviour, more inertia and less "instant" accelerations. But planets remain very disappointing. Firstly in their aspect, they are a step back from my modded X3 FL. The way they are generated is good but the engine lacks another layer to look ok, it uses normal maps to create the details. You definetly feel they are fake, just by look. I could achieve better illlusion of planets in X3 by just using overlayed mapped diff textures. Editing sectors is another thing I am doing and have seen f.i. in Jupiter there are orbiting moons. There was a similar example in Rebirth's omicron lyra, but it was only one or two moons not all. Orbiting planets would be a great additional illusion.
The question...can I use the tool to only look planets in Blender and edit them? I have to load the game after each modification I do, this is terribly... terribly time consuming
Good question. You can definitely load clusters with planets in Blender, but I don't recall if all the textures work correctly. I think so, as they do work for ships. I haven't ported over the actual generation of planets to Blender/python yet, but I believe my addon does already let you generate orbits for anything already in a cluster. The relevant code there is at https://github.com/tomchk/X4_gen_region ... cluster.py

https://github.com/tomchk/X4_gen_regions

Once I port the planet generation, I think you could open its output in Blender. Let me know if you try what's there so far. The most important part of the XSLT for planet generation is this:

Code: Select all

<material name="{concat($thisPlanetSize,$thisPos)}" 
                                          shader="{$shaders/shader[random-number-generator($thisSeed)?permute(1 to count($shaders/shader))[min(($thisPos,count($shaders/shader)))]]}" 
                                          blendmode="NONE" preview="none">
                                    <properties>
                                        <property type="BitMap" name="diffuse_map" value="{($materialProperties/property[lower-case(@name)=lower-case('diffuse_map')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('diffuse_map')]))[$thisLoop]]}" />
                                        <property type="BitMap" name="diffuse_detail_map" value="{($materialProperties/property[lower-case(@name)=lower-case('diffuse_detail_map')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('diffuse_detail_map')]))[$thisLoop]]}" />
                                        <property type="Float" name="diffuse_detail_tiling" value="{($materialProperties/property[lower-case(@name)=lower-case('diffuse_detail_tiling')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('diffuse_detail_tiling')]))[$thisLoop]]}"/>
                                        <property type="Float" name="diffuse_detail_tiling_v" value="{($materialProperties/property[lower-case(@name)=lower-case('diffuse_detail_tiling_v')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('diffuse_detail_tiling_v')]))[$thisLoop]]}"/>
                                        <property type="Float" name="diffuse_detailStr" value="{($materialProperties/property[lower-case(@name)=lower-case('diffuse_detailStr')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('diffuse_detailStr')]))[$thisLoop]]}" />
                                        <property type="Float" name="diffuseStr" value="{($materialProperties/property[lower-case(@name)=lower-case('diffuseStr')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('diffuseStr')]))[$thisLoop]]}" />
                                        <property type="Float" name="DiffOffsetU" value="{($materialProperties/property[lower-case(@name)=lower-case('DiffOffsetU')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('DiffOffsetU')]))[$thisLoop]]}" />
                                        <xsl:copy-of select="($materialProperties/property[lower-case(@name)=lower-case('color_emissive')])[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('color_emissive')]))[$thisLoop]]"/>
                                        <property type="Float" name="AnisoX" value="{($materialProperties/property[lower-case(@name)=lower-case('AnisoX')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('AnisoX')]))[$thisLoop]]}" />
                                        <property type="Float" name="AnisoY" value="{($materialProperties/property[lower-case(@name)=lower-case('AnisoY')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('AnisoY')]))[$thisLoop]]}" />
                                        <property type="BitMap" name="polar_map" value="{($materialProperties/property[lower-case(@name)=lower-case('polar_map')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('polar_map')]))[$thisLoop]]}" />
                                        <xsl:copy-of select="($materialProperties/property[lower-case(@name)=lower-case('color_water')])[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('color_water')]))[$thisLoop]]"/>
                                        <property type="BitMap" name="color_height_map" value="{($materialProperties/property[lower-case(@name)=lower-case('color_height_map')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('color_height_map')]))[$thisLoop]]}" />
                                        <property type="Float" name="color_heightStr" value="{($materialProperties/property[lower-case(@name)=lower-case('color_heightStr')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('color_heightStr')]))[$thisLoop]]}" />
                                        <property type="BitMap" name="color_climate_map" value="{($materialProperties/property[lower-case(@name)=lower-case('color_climate_map')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('color_climate_map')]))[$thisLoop]]}" />
                                        <property type="Float" name="color_climateStr" value="{($materialProperties/property[lower-case(@name)=lower-case('color_climateStr')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('color_climateStr')]))[$thisLoop]]}" />
                                        <property type="BitMap" name="citymap_map" value="{($materialProperties/property[lower-case(@name)=lower-case('citymap_map')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('citymap_map')]))[$thisLoop]]}" />
                                        <property type="Float" name="citymapStr" value="{($materialProperties/property[lower-case(@name)=lower-case('citymapStr')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('citymapStr')]))[$thisLoop]]}" />
                                        <property type="BitMap" name="color_glow_map" value="{($materialProperties/property[lower-case(@name)=lower-case('color_glow_map')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('color_glow_map')]))[$thisLoop]]}" />
                                        <property type="Float" name="citymap_tiling" value="{($materialProperties/property[lower-case(@name)=lower-case('citymap_tiling')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('citymap_tiling')]))[$thisLoop]]}" />
                                        <property type="Float" name="citymap_tiling_v" value="{($materialProperties/property[lower-case(@name)=lower-case('citymap_tiling_v')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('citymap_tiling_v')]))[$thisLoop]]}" />
                                        <property type="Float" name="citymapStr" value="{($materialProperties/property[lower-case(@name)=lower-case('citymapStr')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('citymapStr')]))[$thisLoop]]}" />
                                        <property type="Float" name="citylevel" value="{($materialProperties/property[lower-case(@name)=lower-case('citylevel')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('citylevel')]))[$thisLoop]]}" />
                                        <property type="Float" name="color_glowStr" value="{($materialProperties/property[lower-case(@name)=lower-case('color_glowStr')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('color_glowStr')]))[$thisLoop]]}" />
                                        <property type="BitMap" name="normal_map" value="{($materialProperties/property[lower-case(@name)=lower-case('normal_map')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('normal_map')]))[$thisLoop]]}" />
                                        <property type="Float" name="normalStr" value="{($materialProperties/property[lower-case(@name)=lower-case('normalStr')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('normalStr')]))[$thisLoop]]}" />
                                        <property type="BitMap" name="normal_detail_map" value="{($materialProperties/property[lower-case(@name)=lower-case('normal_detail_map')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('normal_detail_map')]))[$thisLoop]]}" />
                                        <property type="Float" name="normal_detail_tiling" value="{($materialProperties/property[lower-case(@name)=lower-case('normal_detail_tiling')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('normal_detail_tiling')]))[$thisLoop]]}" />
                                        <property type="Float" name="normal_detail_tiling_v" value="{($materialProperties/property[lower-case(@name)=lower-case('normal_detail_tiling_v')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('normal_detail_tiling_v')]))[$thisLoop]]}" />
                                        <property type="Float" name="normal_detailStr" value="{($materialProperties/property[lower-case(@name)=lower-case('normal_detailStr')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('normal_detailStr')]))[$thisLoop]]}" />
                                        <xsl:copy-of select="$thisLoopValues/property"/>
                                        <!-- <property type="Float" name="fOuterRadius" value="{($materialProperties/property[lower-case(@name)=lower-case('fOuterRadius')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('fOuterRadius')]))[$thisLoop]]}" />
                                             <property type="Float" name="fInnerRadius" value="{($materialProperties/property[lower-case(@name)=lower-case('fInnerRadius')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('fInnerRadius')]))[$thisLoop]]}" /> -->
                                        <property type="Float" name="PolarScale" value="{($materialProperties/property[lower-case(@name)=lower-case('PolarScale')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('PolarScale')]))[$thisLoop]]}" />
                                        <property type="Float" name="waterlevel" value="{($materialProperties/property[lower-case(@name)=lower-case('waterlevel')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('waterlevel')]))[$thisLoop]]}" />
                                        <property type="Float" name="fdensity" value="{($materialProperties/property[lower-case(@name)=lower-case('fdensity')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('fdensity')]))[$thisLoop]]}" />
                                        <property type="Float" name="m_ESun" value="{($materialProperties/property[lower-case(@name)=lower-case('m_ESun')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('m_ESun')]))[$thisLoop]]}" />
                                        <xsl:copy-of select="($materialProperties/property[lower-case(@name)=lower-case('color_atmo')])[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('color_atmo')]))[$thisLoop]]"/>
                                        <property type="Float" name="cloudcutoff" value="{($materialProperties/property[lower-case(@name)=lower-case('cloudcutoff')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('cloudcutoff')]))[$thisLoop]]}" />
                                        <property type="Float" name="densecutoff" value="{($materialProperties/property[lower-case(@name)=lower-case('densecutoff')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('densecutoff')]))[$thisLoop]]}" />
                                        <property type="BitMap" name="clouds_mask_map" value="{($materialProperties/property[lower-case(@name)=lower-case('clouds_mask_map')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('clouds_mask_map')]))[$thisLoop]]}" />
                                        <property type="Float" name="clouds_maskStr" value="{($materialProperties/property[lower-case(@name)=lower-case('clouds_maskStr')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('clouds_maskStr')]))[$thisLoop]]}" />
                                        <property type="BitMap" name="clouds_detail_mask_map" value="{($materialProperties/property[lower-case(@name)=lower-case('clouds_detail_mask_map')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('clouds_detail_mask_map')]))[$thisLoop]]}" />
                                        <property type="Float" name="clouds_detail_mask_tiling" value="{($materialProperties/property[lower-case(@name)=lower-case('clouds_detail_mask_tiling')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('clouds_detail_mask_tiling')]))[$thisLoop]]}" />
                                        <property type="Float" name="clouds_detail_mask_tiling_v" value="{($materialProperties/property[lower-case(@name)=lower-case('clouds_detail_mask_tiling_v')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('clouds_detail_mask_tiling_v')]))[$thisLoop]]}" />
                                        <property type="Float" name="clouds_detail_maskStr" value="{($materialProperties/property[lower-case(@name)=lower-case('clouds_detail_maskStr')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('clouds_detail_maskStr')]))[$thisLoop]]}" />
                                        <property type="BitMap" name="cloudmap_map" value="{($materialProperties/property[lower-case(@name)=lower-case('cloudmap_map')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('cloudmap_map')]))[$thisLoop]]}" />
                                        <property type="BitMap" name="densecloudmap_map" value="{($materialProperties/property[lower-case(@name)=lower-case('densecloudmap_map')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('densecloudmap_map')]))[$thisLoop]]}" />
                                        <property type="Float" name="base_contrast_shift" value="{($materialProperties/property[lower-case(@name)=lower-case('base_contrast_shift')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('base_contrast_shift')]))[$thisLoop]]}" />
                                        <property type="Float" name="base_saturation_shift" value="{($materialProperties/property[lower-case(@name)=lower-case('base_saturation_shift')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('base_saturation_shift')]))[$thisLoop]]}" />
                                        <property type="Float" name="base_brightness_shift" value="{($materialProperties/property[lower-case(@name)=lower-case('base_brightness_shift')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('base_brightness_shift')]))[$thisLoop]]}" />
                                        <property type="Float" name="base_hue_shift" value="{($materialProperties/property[lower-case(@name)=lower-case('base_hue_shift')]/@value)[random-number-generator($thisSeed)?permute(1 to count($materialProperties/property[lower-case(@name)=lower-case('base_hue_shift')]))[$thisLoop]]}" />
                                    </properties>
                                    <variations />
                                    <areas />
                                </material>
Care to see what I've been creating? https://www.youtube.com/user/ytubrute

Post Reply

Return to “X4: Foundations - Scripts and Modding”