Jump to content

[1.8.1-1] [PLEASE FORK ME] Kopernicus & KittopiaTech


Thomas P.

Recommended Posts

Is there anyone who could explain me the logic behind the coordinate system of kopernicus (for MapDecals, FlattenArea, ...) ? I've tried to figure it out but for me it currently makes no sense. 

For example KSC: position = 157000,-3000,-570000 (MapDecalTangent)

How do these numbers translate? 

So how does 157000,-3000,-570000 become 0° 6′ 9″ S & 74° 34′ 31″ W ?

Edited by StarCrusher96
Link to comment
Share on other sites

@Drew Kerman I've resumed work on the upgraded ring shader.

 

And I have news for pretty much everyone. They say an image speaks a thousand words, well, I'll let images speak first then. :)

 

Dev shots:

Spoiler

First test of the upgraded shader in KSP, using Cyran's rings pasted around Jool as a base

8XcPETC.png

 

From the testing grounds, to an actual planet pack. Pack in question: Evolution

Rings as they look in KSP by default:

FiIezCB.png

Detail level 1:

bHrVeRF.png

Detail level 2:

bHrVeRF.png

Final product:

C45EgFC.png

It's a slight edit, adding a few lines to @blackrack's original shader to filter in detail. This detail uses a single texture that is applied twice. The detail texture, filter distance and texture scale are all user-configurable.

To be specific:

detailTex = X //filepath to the detail tex
pass1 = X,Y //x = minimum distance between camera and rings for detail level 1. y = detail level 1 tex scale
pass2 = X,Y //x = minimum distance between camera and rings for detail level 2. y = detail level 2 tex scale

As you can see, there are two levels of detail. Level 1 is designed to be used when the camera is near the rings, but not about to pass through. This way you can filter out pixel-iness and keep the rings detailed. Detail level 2 is for when you're close enough to touch the rings, so the rings look immensely detailed even at very close range.

 

Future ideas:

- Emission texture: let parts of your rings glow in the dark!

- Up-close grainy noise or particles

Edited by The White Guardian
Link to comment
Share on other sites

If y'all thought that that last change was an improvement...

Because Imgur hates me, it'll take me a few moments to get you all a picture, but I added two new features to the rings.
- Dust is now filtered in up-close to make the rings truly exceptional
- You can now set a 'culling distance'. IE, if you get within this distance, the rings will start fading gradually. No more ugly clipping when a spacecraft intersects the rings!

Link to comment
Share on other sites

On 1/24/2018 at 7:30 PM, The White Guardian said:

8XcPETC.png

In this image, the polygonal nature of the ring mesh is showing, because the texture coordinates are being taken from the mesh/interpolated UVs.

In my original code, I added a few lines to calculate the texture coordinates in the pixel shader, based on distance from the center of the planet, resulting in perfectly circular and not polygonal rings.

This seems to have been reverted at some point, I would suggest putting it back in to get perfectly circular rings.

Basically here https://github.com/Kopernicus/Kopernicus/blob/master/shaders/ringsShader.shader#L165 replace i.texCoord by something like this https://github.com/LGhassen/Scatterer/blob/master/scatterer/Shaders/scattererShaders/Assets/shaders/SunFlareExtinction.shader#L176-L180

Anyway, great work on the dust in the closeups, something I wanted to do since the beginning.

Edited by blackrack
Link to comment
Share on other sites

20 hours ago, blackrack said:

In this image, the polygonal nature of the ring mesh is showing, because the texture coordinates are being taken from the mesh/interpolated UVs.

In my original code, I added a few lines to calculate the texture coordinates in the pixel shader, based on distance from the center of the planet, resulting in perfectly circular and not polygonal rings.

This seems to have been reverted at some point, I would suggest putting it back in to get perfectly circular rings.

Basically here https://github.com/Kopernicus/Kopernicus/blob/master/shaders/ringsShader.shader#L165 replace i.texCoord by something like this https://github.com/LGhassen/Scatterer/blob/master/scatterer/Shaders/scattererShaders/Assets/shaders/SunFlareExtinction.shader#L176-L180

Anyway, great work on the dust in the closeups, something I wanted to do since the beginning.

:o That is brilliant! I'm adding that ASAP. It should be a simple substitution.

Currently the UV coords are multiplied before being passed on to the textures to handle scale on the shader instead. Therefore, I could replace it:

float distance = length (ringIntersectPt);
float ringTexturePosition = (distance - ringInnerRadius) / (ringOuterRadius - ringInnerRadius);
ringTexturePosition = 1 - ringTexturePosition;
float2 UV_C = float2(ringTexturePosition, ringTexturePosition); //Store as Vector2 for easy substitution

And then feed a multiplication of UV_C to the main and detail textures.

I'll give it some testing in-game to ensure all works properly. Thank you!

Link to comment
Share on other sites

17 hours ago, The White Guardian said:

:o That is brilliant! I'm adding that ASAP. It should be a simple substitution.

Currently the UV coords are multiplied before being passed on to the textures to handle scale on the shader instead. Therefore, I could replace it:


float distance = length (ringIntersectPt);
float ringTexturePosition = (distance - ringInnerRadius) / (ringOuterRadius - ringInnerRadius);
ringTexturePosition = 1 - ringTexturePosition;
float2 UV_C = float2(ringTexturePosition, ringTexturePosition); //Store as Vector2 for easy substitution

And then feed a multiplication of UV_C to the main and detail textures.

I'll give it some testing in-game to ensure all works properly. Thank you!

Yes, I remember a while back the scale wasn"t handled correctly and in some cases there were black/invisible rings with some planets, mostly gas giants of planet packs, maybe these had the most dramatic scale use?

I think this is covered now then.

Edited by blackrack
Link to comment
Share on other sites

KSC both clipped into and floating above terrain

I'm working on updating GregroxMun's Alien Space Programs for Kopernicus 1.3.1-3, supporting localization, non-index-numbered worlds, and so on, making sure the configurations are up to date.

I'm stuck on his Restored Duna version. "Restored Duna" uses the Duna textures from KSP versions prior to 0.21. For some reason, the KSC will both clip into the terrain and float above the terrain depending on the original underlying terrain map. The screen shots here are on the flattest place I could find close to the original non-Restored Duna version.

RestoredDunaKSCClipped1.png

RestoredDunaKSCClipped2.png

The bottom one is directly west of the research lab, and the KSC hovers roughly one metre above the terrain. The top one is just encroaching on the runway.

The entire configuration is available from my fork of the project. Note that my fork moves the Restored Duna KSC three degrees south to use flatter terrain. The relevant bit is here:

Spoiler

		SpaceCenter
		{
			//PQSCity
			latitude = -3.05
			//longitude = -16.28
			longitude = -16.05
			lodvisibleRangeMult = 6
			repositionToSphereSurface = true
			repositionToSphereSurfaceAddHeight = true
			//repositionRadiusOffset = -14
			repositionRadiusOffset = -20
			//Fix added for induced rotation
			reorientToSphere = true  
			reorientFinalAngle = -74
			
			//MapDecal 
			decalLatitude = -3.05
			//decalLongitude = -16.28
			decalLongitude = -16.28
			heightMapDeformity = 100
			absoluteOffset = 0
			absolute = true
			radius = 10000

			//Ground Materials
			groundColor = RGBA(84,34,23,12)
			groundTexture = BUILTIN/ksc_exterior_terrain_ground
		}

 

So do I need to flatten out the land underneath the KSC by editing the underlying height map image, or is there a way to flatten the underlying terrain directly? I thought the MapDecal configuration raised the surrounding terrain up and flattened it out.

Link to comment
Share on other sites

Hey, I gots a Urania wedged between Dres and Jool, not quite sure it fits but oh well... My first probe just reached target but when it encounters SoI, it's like running into a hard surface... I reloaded and burned all my propellant and tried to hit the boundry Damn Slow(tm) and still BOOM. I'm mystified, first time I saw a bug like this. =\ 

Here are some log excerpts: 

[EXC 11:13:31.418] NullReferenceException: Object reference not set to an instance of an object
       Kopernicus.Components.KopernicusStar.LateUpdate ()


[EXC 11:14:31.226] NullReferenceException: Object reference not set to an instance of an object
       PQSMod_VertexHeightMap.OnVertexBuildHeight (.VertexBuildData data)
       PQS.Mod_OnVertexBuildHeight (.VertexBuildData data)
       PQS.GetSurfaceHeight (Vector3d radialVector)
       ContractConfigurator.BiomeTracker+<LoadBodyInfo>d__10.MoveNext ()
       System.Linq.Enumerable+<CreateSelectManyIterator>c__Iterator12`2[CelestialBody,UnityEngine.YieldInstruction].MoveNext ()
       ContractConfigurator.BiomeTracker+<LoadAllBodyInfo>d__9.MoveNext ()
       UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress)
       UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
       ContractConfigurator.BiomeTracker:Start()


[WRN 11:21:29.025] Cannot find preset 'High' for pqs 'Rhea'
[EXC 11:21:29.025] NullReferenceException: Object reference not set to an instance of an object
       PQSMod_VertexHeightMap.OnVertexBuildHeight (.VertexBuildData data)
       PQS.Mod_OnVertexBuildHeight (.VertexBuildData data)
       PQS.GetSurfaceHeight (Vector3d radialVector)
       PQS.UpdateVisual ()
       PQS.StartSphere (Boolean force)
       PQS+^A^K.MoveNext ()
       UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress)

 

Here's the log trace from the explosion: 

 

[LOG 11:30:51.024] [OrbitDriver]: On-Rails SOI Transition from Sun to Urania.
Transition UT Range: 33431125.161 - 33431126.161.
Transition UT: 33431125.648. Iterations: 24.
[LOG 11:30:51.779] [Progress Node Reached]: Flyby
[LOG 11:30:51.779] [Progress Node Reached]: Urania
[LOG 11:30:51.779] [Progress Node Complete]: Flyby
[LOG 11:30:51.780] Added 0.3410652 (4) reputation: 'Progression'.
[WRN 11:30:51.839] [F: 67783]: Vessel Jool Relay 1B Debris crashed through terrain on Urania.
[LOG 11:30:51.839] [F: 67783]: [05:09:37]: Jool Relay 1B Debris crashed into Urania.
[LOG 11:30:51.839] [KSPI] - Handling Impactor
[LOG 11:30:51.840] [KSPI] - Handling Impactor
[LOG 11:30:51.840] [KSPI] - Handling Impactor
[LOG 11:30:51.840] [KSPI] - Handling Impactor
[LOG 11:30:51.840] NP.decoupler.stack.125m.Mini Exploded!! - blast awesomeness: 0.5
[LOG 11:30:51.840] [PartSet]: Recreating part sets for vessel Jool Relay 1B Debris
[LOG 11:30:51.848] [Dynamic Battery Storage]: Summary:
vessel NP.decoupler.stack.125m.Mini (loaded state True)
- 0 stock power handlers
[LOG 11:30:51.869] [Dynamic Battery Storage]: Summary:
vessel probeStackSmall (Jool Relay 1B) (loaded state True)
- 2 stock power handlers
[LOG 11:30:51.883] [PartSet]: Recreating part sets for vessel [empty name]
[LOG 11:30:51.883] [Dynamic Battery Storage]: Summary:
vessel NP.decoupler.stack.125m.Mini (loaded state True)
- 0 stock power handlers
[LOG 11:30:51.887] [Dynamic Battery Storage]: Summary:
vessel probeStackSmall (Jool Relay 1B) (loaded state True)
- 2 stock power handlers
[LOG 11:30:51.887] [PartSet]: Recreating part sets for vessel Jool Relay 1B Debris
[LOG 11:30:51.887] [NP.decoupler.stack.125m.Mini]: Deactivated
[LOG 11:30:51.887] [Dynamic Battery Storage]: Summary:
vessel NP.decoupler.stack.125m.Mini (loaded state True)
- 0 stock power handlers
[LOG 11:30:51.891] [Dynamic Battery Storage]: Summary:
vessel probeStackSmall (Jool Relay 1B) (loaded state True)
- 2 stock power handlers
[LOG 11:30:51.894] [KSPI] Creating Resource Manager for Vessel Jool Relay 1B Debris (Megajoules)
[LOG 11:30:51.959] FARVesselAero on fairingSize2 reporting startup
[LOG 11:30:51.959] [Dynamic Battery Storage]: Could not find an electrical storage part on the vessel


[ERR 11:30:52.012] TimingFI threw during FixedUpdate: System.ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
 at System.Collections.Generic.List`1[OcclusionData].get_Item (Int32 index) [0x00000] in <filename unknown>:0
 at FlightIntegrator.UpdateOcclusionSolar () [0x00000] in <filename unknown>:0
 at FlightIntegrator.UpdateOcclusion (Boolean all) [0x00000] in <filename unknown>:0
 at ModularFI.ModularFlightIntegrator.UpdateOcclusion (Boolean all) [0x00000] in <filename unknown>:0
 at FlightIntegrator.FixedUpdate () [0x00000] in <filename unknown>:0
 at ModularFI.ModularFlightIntegrator.TimedFixedUpdate () [0x00000] in <filename unknown>:0
 at (wrapper delegate-invoke) Callback:invoke_void__this__ ()
 at TimingFI.FixedUpdate () [0x00000] in <filename unknown>:0

[ERR 11:30:52.014] Infinity or NaN floating point numbers appear when calculating the transform matrix for a Collider. Scene hierarchy path "Jool Relay 1B Debris (Unloaded)/model$

 

Link to comment
Share on other sites

Can you expalain please why do my custom planets look like this?

https://imgur.com/UZcPLvq

Here's the code

@Kopernicus:AFTER[Kopernicus]
{
    Body
    {
        name = Chernus

        Orbit
        {
            referenceBody = Sun
            inclination = 5
            eccentricity = 0.3
            semiMajorAxis = 2763138304
            longitudeOfAscendingNode = 0
            argumentOfPeriapsis = 0
            meanAnomalyAtEpoch = 0
            epoch = 0
            color = 1,0.00233444,0,1
        }

        Properties
        {
            description = Chernus is the nearest planet to Kerbol, and the hottest planet in the system. If you look at Chernus with a telescope, you'll see just a big red-orange dot.
            radius = 3400000
            geeASL = 0.024
            rotationPeriod = 3600
            rotates = true
            tidallyLocked = true
            initialRotation = 0
            isHomeWorld = false
            timewarpAltitudeLimits = 0 30000 30000 60000 100000 300000 600000 800000

            ScienceValues
            {
                landedDataValue = 8
                splashedDataValue = 1
                flyingLowDataValue = 5
                flyingHighDataValue = 5
                inSpaceLowDataValue = 7
                inSpaceHighDataValue = 5
                recoveryValue = 5
                flyingAltitudeThreshold = 12000
                spaceAltitudeThreshold = 140000
            }
        }

        ScaledVersion
        {
            type = Atmospheric
            fadeStart = 0
            fadeEnd = 0

            Material
            {
                // Common scaled space settings
                texture = KerbolExpansion/KopernicusFiles/Chernus/PluginData/chernus_color.dds
                shininess = 0
                specColor = 0.0,0.0,0.0,1.0

                // Atmosphere settings
                rimPower = 2.06 
                rimBlend = 0.3

                // Atmosphere color ramp texture
                Gradient
                {
                    0.0 = 0.0000,0.0000,0.0000,1
                    0.6 = 0.0000,0.0000,0.0000,1
                    1.0 = 0.0000,0.0000,0.0000,1
                }
            }
        }

        Atmosphere
        {
            // effectively the ambient lighting color for all objects on the ground of this body (provides a slight tint)
            ambientColor = 0.006,0.187,0.8,1   

            //
            // shader.invWaveLength = Color( 1 / r^4, 1 / g^4, 1 / b^4, 0.5);
            //
            lightColor = 0.709,0.788,0.543,0

            // General atmosphere settings
            enabled = true
            oxygen = false
            altitude = 175000.0

            // Atmosphere Pressure
            // pressure (in atm) = multipler * e ^ -(altitude / (scaleHeight * 1000))
            pressureCurve
            {
                key = 0 1722.525 -3.68761403636364E-02 -3.68761403636364E-02
                key = 13750 1215.4779 -2.89618181818182E-02 -2.89618181818182E-02
                key = 27500 926.0747733 -1.70812909090909E-02 -1.70812909090909E-02
                key = 41250 745.7422867 -1.22066367272727E-02 -1.22066367272727E-02
                key = 55000 590.39232 -1.03885874909091E-02 -1.03885874909091E-02
                key = 68750 460.0561533 -8.63595672727273E-03 -8.63595672727273E-03
                key = 82500 352.9034533 -7.05044647272727E-03 -7.05044647272727E-03
                key = 96250 266.1688867 -5.6660456E-03 -5.6660456E-03
                key = 110000 197.0872333 -4.48274916363636E-03 -4.48274916363636E-03
                key = 123750 142.8932733 -3.50056581818182E-03 -3.50056581818182E-03
                key = 137500 100.8216733 -2.71949803636364E-03 -2.71949803636364E-03
                key = 151250 68.1071 -2.13953963636364E-03 -2.13953963636364E-03
                key = 165000 41.98433333 -1.65774109090909E-03 -1.65774109090909E-03
                key = 178750 22.51922 -1.00126501090909E-03 -1.00126501090909E-03
                key = 192500 14.44954667 -4.06759432727273E-04 -4.06759432727273E-04
                key = 206250 11.33333333 -2.27824727272727E-04 -2.27824727272727E-04
                key = 220000 8.184366667 -2.25669374545455E-04 -2.25669374545455E-04
                key = 233750 5.127426667 -2.06283192727273E-04 -2.06283192727273E-04
                key = 247500 2.51158 -1.61502101818182E-04 -1.61502101818182E-04
                key = 261250 0.68612 -9.13301818181818E-05 -9.13301818181818E-05
                key = 275000 0 -4.98996363636364E-05 -4.98996363636364E-05
            }
            
            // temperature Curve
            temperatureCurve
            {
                key = 0 141.67 -0.002333333455 -0.002333333455
                key = 33000 104.4583677 -0.0003304941091 -0.0003294753455
                key = 57750 104.4583677 0.0003294753455 0.0003294753455
                key = 85250 131.0381051 0.0001800779636 0.0001800779636
                key = 154000 131.0381051 -0.0002483375636 -0.0002483375636
                key = 220000 90.44359713 -0.0003304941091 -0.0003304941091
                key = 247500 90.44359713 0.0001722816364 0.0001722816364
                key = 275000 111.2241191 0.0002525833091 0.0002525833091
                key = 343750 0 -0.0001634942182 -0.0001634942182
            }
        }
    }
}

Thanks if you can help

Edited by alexb2810
Link to comment
Share on other sites

30 minutes ago, alexb2810 said:

Can you expalain please why do my custom planets look like this?

https://imgur.com/UZcPLvq

Here's the code


@Kopernicus:AFTER[Kopernicus]
{
    Body
    {
        name = Chernus

        Orbit
        {
            referenceBody = Sun
            inclination = 5
            eccentricity = 0.3
            semiMajorAxis = 2763138304
            longitudeOfAscendingNode = 0
            argumentOfPeriapsis = 0
            meanAnomalyAtEpoch = 0
            epoch = 0
            color = 1,0.00233444,0,1
        }

        Properties
        {
            description = Chernus is the nearest planet to Kerbol, and the hottest planet in the system. If you look at Chernus with a telescope, you'll see just a big red-orange dot.
            radius = 3400000
            geeASL = 0.024
            rotationPeriod = 3600
            rotates = true
            tidallyLocked = true
            initialRotation = 0
            isHomeWorld = false
            timewarpAltitudeLimits = 0 30000 30000 60000 100000 300000 600000 800000

            ScienceValues
            {
                landedDataValue = 8
                splashedDataValue = 1
                flyingLowDataValue = 5
                flyingHighDataValue = 5
                inSpaceLowDataValue = 7
                inSpaceHighDataValue = 5
                recoveryValue = 5
                flyingAltitudeThreshold = 12000
                spaceAltitudeThreshold = 140000
            }
        }

        ScaledVersion
        {
            type = Atmospheric
            fadeStart = 0
            fadeEnd = 0

            Material
            {
                // Common scaled space settings
                texture = KerbolExpansion/KopernicusFiles/Chernus/PluginData/chernus_color.dds
                shininess = 0
                specColor = 0.0,0.0,0.0,1.0

                // Atmosphere settings
                rimPower = 2.06 
                rimBlend = 0.3

                // Atmosphere color ramp texture
                Gradient
                {
                    0.0 = 0.0000,0.0000,0.0000,1
                    0.6 = 0.0000,0.0000,0.0000,1
                    1.0 = 0.0000,0.0000,0.0000,1
                }
            }
        }

        Atmosphere
        {
            // effectively the ambient lighting color for all objects on the ground of this body (provides a slight tint)
            ambientColor = 0.006,0.187,0.8,1   

            //
            // shader.invWaveLength = Color( 1 / r^4, 1 / g^4, 1 / b^4, 0.5);
            //
            lightColor = 0.709,0.788,0.543,0

            // General atmosphere settings
            enabled = true
            oxygen = false
            altitude = 175000.0

            // Atmosphere Pressure
            // pressure (in atm) = multipler * e ^ -(altitude / (scaleHeight * 1000))
            pressureCurve
            {
                key = 0 1722.525 -3.68761403636364E-02 -3.68761403636364E-02
                key = 13750 1215.4779 -2.89618181818182E-02 -2.89618181818182E-02
                key = 27500 926.0747733 -1.70812909090909E-02 -1.70812909090909E-02
                key = 41250 745.7422867 -1.22066367272727E-02 -1.22066367272727E-02
                key = 55000 590.39232 -1.03885874909091E-02 -1.03885874909091E-02
                key = 68750 460.0561533 -8.63595672727273E-03 -8.63595672727273E-03
                key = 82500 352.9034533 -7.05044647272727E-03 -7.05044647272727E-03
                key = 96250 266.1688867 -5.6660456E-03 -5.6660456E-03
                key = 110000 197.0872333 -4.48274916363636E-03 -4.48274916363636E-03
                key = 123750 142.8932733 -3.50056581818182E-03 -3.50056581818182E-03
                key = 137500 100.8216733 -2.71949803636364E-03 -2.71949803636364E-03
                key = 151250 68.1071 -2.13953963636364E-03 -2.13953963636364E-03
                key = 165000 41.98433333 -1.65774109090909E-03 -1.65774109090909E-03
                key = 178750 22.51922 -1.00126501090909E-03 -1.00126501090909E-03
                key = 192500 14.44954667 -4.06759432727273E-04 -4.06759432727273E-04
                key = 206250 11.33333333 -2.27824727272727E-04 -2.27824727272727E-04
                key = 220000 8.184366667 -2.25669374545455E-04 -2.25669374545455E-04
                key = 233750 5.127426667 -2.06283192727273E-04 -2.06283192727273E-04
                key = 247500 2.51158 -1.61502101818182E-04 -1.61502101818182E-04
                key = 261250 0.68612 -9.13301818181818E-05 -9.13301818181818E-05
                key = 275000 0 -4.98996363636364E-05 -4.98996363636364E-05
            }
            
            // temperature Curve
            temperatureCurve
            {
                key = 0 141.67 -0.002333333455 -0.002333333455
                key = 33000 104.4583677 -0.0003304941091 -0.0003294753455
                key = 57750 104.4583677 0.0003294753455 0.0003294753455
                key = 85250 131.0381051 0.0001800779636 0.0001800779636
                key = 154000 131.0381051 -0.0002483375636 -0.0002483375636
                key = 220000 90.44359713 -0.0003304941091 -0.0003304941091
                key = 247500 90.44359713 0.0001722816364 0.0001722816364
                key = 275000 111.2241191 0.0002525833091 0.0002525833091
                key = 343750 0 -0.0001634942182 -0.0001634942182
            }
        }
    }
}

Thanks if you can help

That’s typically caused by a bad texture path.  You are also missing a body template, which will cause issues.

Link to comment
Share on other sites

Hello everybody,

I released Kopernicus 1.3.1-4 1.3.1-5 on Github. It is mainly a bugfix release, but there are also some new features and caveats

Changelog

  • Fixed RAM usage while generating ScaledSpace meshes
  • Fixed the PhysicsMaterial Loader
  • Fixed PQSCity Deletion
  • Standardized the Loading System in preparation for having the Kittopia Logic entirely in Kopernicus
  • Added the generic Noise Parser from KopernicusExpansion
  • Added the ability to load other noises than RidgedMultifractal in VertexPlanet. To keep the previous behaviour, rename the Noise node in SharpnessNoise to Noise:RidgedMultifractal and change octaveCount to octaves
  • Fixed issues in MeshScatter, VertexHeightNoiseHeightMap and VertexPlanet
  • Fixed the bug that causes orbit lines to flicker at a certain angle / distance
  • Made the ring and scatter systems modular, so third parties can add their own components to them. While rings don't have built-in components at the moment, the Scatter colliders and experiments were moved into components. To keep the old behaviour, change collides = true to Components { ScatterColliders { } } and move the contents of the Experiment node to Components { ScatterExperiment { } }
  • Unload Scaled Space textures on scene change
  • Fixed the yellow-stripes bug that occured when trying to load textures from PluginData in OpenGL environments
  • Added an experimental OnDemand setting, that manages memory manually and only stores the channels of the texture that are neccessary instead of the whole texture. (useManualMemoryManagement = true in the Kopernicus node)
  • Added proper OnDemand load management for Biome maps
  • The scatter and landClass nodes from LandControl are now named Scatter and LandClass. The old values still work, but they are deprecated.

A Scatterer update fixed compatibility between ScaledSpace OnDemand Loading and Scatterer itself. The planets should no longer stay completely white.

This updates introduces quite significant code changes, so mods that depend on Kopernicus may stop working (Sigmas Mods, KopernicusExpansion etc.). Please be patient and wait for an update.

Link: https://github.com/Kopernicus/Kopernicus/releases/tag/release-1.3.1-5

Edited by Thomas P.
Link to comment
Share on other sites

Maybe I've done something wrong but it appears there is a problem with the current version (just released) of Kopernicus and or SVT.  I just installed Kop and SVT into an existing save and it's causing both Kerbal Engineer and Surface Experiment Pack to throw exceptions when they query for the biome.  SEP throws exceptions on scene changes and KER spams the log with IndexOutOfRange exceptions which are game ending. The log spamming eventually causes a bunch of other mods to fail and start throwing exceptions. 

Here's how the error happened.  I launched a vessel from the VAB to the launchpad.  SEP appears to have tried to check the biome of my SEP vessels on the science change.  KER repeatedly tried to determine the biome for the launched vessel once it loaded (I have the current biome in my KER HUD).  I alt-f4'ed the game and uninstalled Kop, SVT, and MFI.  After reloading the gaming and going back to the vessel on the launchpad, KER and SEP no longer throw errors.

I assume there is a problem with either Kop or SVT.  I looked at the SVT thread and didn't see any other users having the same problem so even if it were SVT it would seem to be related to the most recent Kop update.  Below, I've included the SEP exception, the KER exception, and a link to my output log.

Here's the SEP exception:

[SEP_Science] Processing unloaded SEP vessel: SEP Central Station
6 SEP modules found
 
(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)

IndexOutOfRangeException: Array index is out of range.
  at CBAttributeMapSO.GetAtt (Double lat, Double lon) [0x00000] in <filename unknown>:0 
  at ScienceUtil.GetExperimentBiome (.CelestialBody body, Double lat, Double lon) [0x00000] in <filename unknown>:0 
  at SEPScience.SEP_Utilities.currentBiome (.ScienceExperiment e, .Vessel v) [0x00000] in <filename unknown>:0 
  at SEPScience.SEP_Utilities.subjectIsValid (SEPScience.SEP_ExperimentHandler handler) [0x00000] in <filename unknown>:0 
  at SEPScience.SEP_ExperimentHandler.getSubmittedData () [0x00000] in <filename unknown>:0 
  at SEPScience.SEP_Controller.experimentCheck (Double time) [0x00000] in <filename unknown>:0 
  at SEPScience.SEP_Controller.Update () [0x00000] in <filename unknown>:0 
 
(Filename:  Line: -1)

IndexOutOfRangeException: Array index is out of range.
  at CBAttributeMapSO.GetAtt (Double lat, Double lon) [0x00000] in <filename unknown>:0 
  at ScienceUtil.GetExperimentBiome (.CelestialBody body, Double lat, Double lon) [0x00000] in <filename unknown>:0 
  at SEPScience.SEP_UI.Windows.SEP_VesselSection.getSituationString () [0x00000] in <filename unknown>:0 
  at SEPScience.SEP_UI.Windows.SEP_VesselSection..ctor (.Vessel v) [0x00000] in <filename unknown>:0 
  at SEPScience.SEP_UI.Windows.SEP_AppLauncher.processVesselSections () [0x00000] in <filename unknown>:0 
  at SEPScience.SEP_UI.Windows.SEP_AppLauncher+<getVessels>d__54.MoveNext () [0x00000] in <filename unknown>:0 
  at UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) [0x00000] in <filename unknown>:0 

Here's the KER exception:

KerbalEngineer -> GetExperimentBiome(Kerbin, -0.0972078791233403, -74.5576811942931) died
 
(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)

KerbalEngineer -> Array index is out of range.
 
(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)

KerbalEngineer ->   at CBAttributeMapSO.GetAtt (Double lat, Double lon) [0x00000] in <filename unknown>:0 
  at ScienceUtil.GetExperimentBiome (.CelestialBody body, Double lat, Double lon) [0x00000] in <filename unknown>:0 
  at KerbalEngineer.Flight.Readouts.Surface.ImpactProcessor.Update () [0x00000] in <filename unknown>:0 
 
(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)

IndexOutOfRangeException: Array index is out of range.
  at CBAttributeMapSO.GetAtt (Double lat, Double lon) [0x00000] in <filename unknown>:0 
  at ScienceUtil.GetExperimentBiome (.CelestialBody body, Double lat, Double lon) [0x00000] in <filename unknown>:0 
  at KerbalEngineer.Flight.Readouts.Surface.Biome.Draw (KerbalEngineer.Flight.Sections.SectionModule section) [0x00000] in <filename unknown>:0 
  at KerbalEngineer.Flight.Sections.SectionModule.DrawReadoutModules () [0x00000] in <filename unknown>:0 
  at KerbalEngineer.Flight.Sections.SectionModule.Draw () [0x00000] in <filename unknown>:0 
  at KerbalEngineer.Flight.Sections.SectionWindow.Window (Int32 windowId) [0x00000] in <filename unknown>:0 
  at UnityEngine.GUILayout+LayoutedWindow.DoWindow (Int32 windowID) [0x00000] in <filename unknown>:0 
  at UnityEngine.GUI.CallWindowDelegate (UnityEngine.WindowFunction func, Int32 id, UnityEngine.GUISkin _skin, Int32 forceRect, Single width, Single height, UnityEngine.GUIStyle style) [0x00000] in <filename unknown>:0 
 
(Filename:  Line: -1)

IndexOutOfRangeException: Array index is out of range.
  at CBAttributeMapSO.GetAtt (Double lat, Double lon) [0x00000] in <filename unknown>:0 
  at ScienceUtil.GetExperimentBiome (.CelestialBody body, Double lat, Double lon) [0x00000] in <filename unknown>:0 
  at KerbalEngineer.Flight.Readouts.Surface.Biome.Draw (KerbalEngineer.Flight.Sections.SectionModule section) [0x00000] in <filename unknown>:0 
  at KerbalEngineer.Flight.Sections.SectionModule.DrawReadoutModules () [0x00000] in <filename unknown>:0 
  at KerbalEngineer.Flight.Sections.SectionModule.Draw () [0x00000] in <filename unknown>:0 
  at KerbalEngineer.Flight.Sections.SectionWindow.Window (Int32 windowId) [0x00000] in <filename unknown>:0 
  at UnityEngine.GUILayout+LayoutedWindow.DoWindow (Int32 windowID) [0x00000] in <filename unknown>:0 
  at UnityEngine.GUI.CallWindowDelegate (UnityEngine.WindowFunction func, Int32 id, UnityEngine.GUISkin _skin, Int32 forceRect, Single width, Single height, UnityEngine.GUIStyle style) [0x00000] in <filename unknown>:0 
 
(Filename:  Line: -1)

Here's a link to my output.log: https://www.dropbox.com/s/aophv82p0u21cl0/output_log - Kop_SVT.txt?dl=1

Edited by Tarheel1999
Link to comment
Share on other sites

17 minutes ago, Galileo said:

@Tarheel1999 I mean, I haven’t updated anything to the latest Kopernicus (not saying there isn’t a problem), but if you are just using Kopernicus for SVT, you had no reason to update yet.

Okay. Chalk this up to user error then. I downloaded the most recent Kopernicus because I try to keep all mods updated. I scanned the patch notes but missed the section below about mods needing an update. 

@Thomas P. Apparently, this was user error on my part. I apologize for wasting your time.  I missed your italicized section at the bottom stating that mods would need to be updated. Might I suggest that you state at the top that mods relying on Koppernicus may/will need to be updated due to significant code changes? There is a substantial tension between the introduction and closing of your post. 

Link to comment
Share on other sites

7 minutes ago, Tarheel1999 said:

Okay. Chalk this up to user error then. I downloaded the most recent Kopernicus because I try to keep all mods updated. I scanned the patch notes but missed the section below about mods needing an update. 

@Thomas P. Apparently, this was user error on my part. I apologize for wasting your time.  I missed your italicized section at the bottom stating that mods would need to be updated. Might I suggest that you state at the top that mods relying on Koppernicus may/will need to be updated due to significant code changes? There is a substantial tension between the introduction and closing of your post. 

Thanks for the apology but you (and @Galileo ) are wrong. I tried it in just stock + Kopernicus and it failed like you described. Already found the cause too.

@everybody Guess that means 1.3.1-5 then :P

Edit: 1.3.1-5 is on Github

Edited by Thomas P.
Link to comment
Share on other sites

11 minutes ago, Thomas P. said:

Thanks for the apology but you (and @Galileo ) are wrong. I tried it in just stock + Kopernicus and it failed like you described. Already found the cause too.

@everybody Guess that means 1.3.1-5 then :P

Edit: 1.3.1-5 is on Github

Are you saying it failed in 1.3.1-3? Because all I was suggesting was that he return to that version until I updated SVT.

if it was indeed broken, I will need to get an update out ASAP 

Edited by Galileo
Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...