RenderToCubemap and SkyboxGenerator don't work for Unity3.

I tried to use RenderToCubeMapWizard and it renders ok, but after that whenever i try to touch my cubemap it shows that error …

Invalid angle: 1.#INF00
UnityEditor.DockArea:OnGUI()

[…..\Runtime\Terrain\ImposterRenderTexture.cpp line 166]
(Filename: E:/BuildAgent/work/68355d6e5d19d587/Runtime/Export/Generated/Terrains.cs Line: 750)

What on earth is that???

After that i tried to use Skybox generator and it throws that error

Assets/Editor/SkyBoxGenerator.js(51,44): BCE0022: Cannot convert ‘Object’ to ‘UnityEngine.Vector3’.

and it points to that line of the script

go.transform.eulerAngles = skyDirection[orientation];

any help ? Have anybody else encounter this problem ?

Same problem here :frowning:

It is strange every cubemap i click shows this invalid angle error … if i start a new project with the existing default cubemaps, it works fine no error when i click cubemaps . I don’t have a clue what caused it. I deleted the rendertocubemap script and it still gives the error. There must be a bug or something …

Please can you file a bug report for this (menu: Help > Report A Bug).

@thanks andeee i will do .

Did this get fixed yet? I can’t get my game to build until this bug is fixed.

there was no update since this thread started, so no
you will have to wait for the next release which if we go by the public article on that texture technology that unity will incorporate, should happen in nov somewhen.

Are you talking about this script? Because it just works fine for me??

class RenderCubemapWizard extends ScriptableWizard {
var renderFromPosition : Transform;
var cubemap : Cubemap;
function OnWizardUpdate () {
helpString = “Select transform to render from and cubemap to render into”;
isValid = (renderFromPosition != null) (cubemap != null);
}
function OnWizardCreate () {
// create temporary camera for rendering
var go = new GameObject( “CubemapCamera”, Camera );
// place it on the object
go.transform.position = renderFromPosition.position;
go.transform.rotation = Quaternion.identity;
// render into cubemap
go.camera.RenderToCubemap( cubemap );
// destroy temporary camera
DestroyImmediate( go );
}
@MenuItem(“Custom/Editor/Render Cubemap”)
static function RenderCubemap () {
ScriptableWizard.DisplayWizard(
“Render cubemap”, RenderCubemapWizard, “Render!”);
}
}

For anyone interested in this script, I edited it to work in Unity 3. Since there is a bug that doesn’t let eulerAngles read a vector from an array I edited the script to just run the renders from functions defined for each angle.

It’s a sloppy mess but works.

It works the same as the original skybox generator but allows you adjust the Far Clip Plane, Skybox or Solid Color and what Color for Solid Color.

Great for using Unity terrain to make mountains or forest skyboxes. you can also render on black Solid Color and cut the image out and place them on planes and you have billboard trees or mountains to populate your BGs with. Lots of options.

Enjoy

SkyBoxGenerator.js

#pragma strict
class SkyBoxGenerator extends ScriptableWizard
{
    var renderFromPosition : Transform;
    
    var skyBoxImage = new Array ("frontImage", "rightImage", "backImage", "leftImage", "upImage", "downImage");
    
	var farClip : float = 1000;
	
	var skyBox : boolean;
	
	var skyColor = Color (0,0,0,0);
    function OnWizardUpdate()
    {
        helpString = "Select transform to render from";
        isValid = (renderFromPosition != null);
    }
    
    function OnWizardCreate()
    {
        var go = new GameObject ("SkyboxCamera", Camera);
        if (skyBox)
        go.camera.clearFlags = CameraClearFlags.Skybox;
		else
        go.camera.backgroundColor = skyColor;
		
        go.camera.clearFlags = CameraClearFlags.Skybox;
        go.camera.fieldOfView = 90;    
        go.camera.aspect = 1.0;
		go.camera.farClipPlane = farClip;
        
        go.transform.position = renderFromPosition.position;
        
        if (renderFromPosition.renderer)
        {
            go.transform.position = renderFromPosition.renderer.bounds.center;
        }
        
        go.transform.rotation = Quaternion.identity;
            renderSkyImage0 (0, go);
            renderSkyImage1 (1, go);
            renderSkyImage2 (2, go);
            renderSkyImage3 (3, go);
            renderSkyImage4 (4, go);
            renderSkyImage5 (5, go);
 
        DestroyImmediate (go);
    }
    
    @MenuItem("Custom/Render Skybox", false, 4)
    static function RenderSkyBox()
    {
        ScriptableWizard.DisplayWizard ("Render SkyBox", SkyBoxGenerator, "Render!");
    }
    
    function renderSkyImage0(orientation : int, go : GameObject)
    {
		go.transform.eulerAngles = Vector3 (0,0,0);
		var screenSize = 1024;
		var rt = new RenderTexture (screenSize, screenSize, 24);
		go.camera.targetTexture = rt;
		var screenShot = new Texture2D (screenSize, screenSize, TextureFormat.RGB24, false);
		go.camera.Render();
		RenderTexture.active = rt;
		screenShot.ReadPixels (Rect (0, 0, screenSize, screenSize), 0, 0); 
			
		RenderTexture.active = null;
		DestroyImmediate (rt);
		var bytes = screenShot.EncodeToPNG(); 
			
		var directory = "Assets/Skyboxes";
		if (!System.IO.Directory.Exists(directory))
		System.IO.Directory.CreateDirectory(directory);
		System.IO.File.WriteAllBytes (System.IO.Path.Combine(directory, skyBoxImage[orientation] + ".png"), bytes);
		//
	}
	
	function renderSkyImage1(orientation : int, go : GameObject)
    {
		go.transform.eulerAngles = Vector3 (0,-90,0);
		var screenSize = 1024;
		var rt = new RenderTexture (screenSize, screenSize, 24);
		go.camera.targetTexture = rt;
		var screenShot = new Texture2D (screenSize, screenSize, TextureFormat.RGB24, false);
		go.camera.Render();
		RenderTexture.active = rt;
		screenShot.ReadPixels (Rect (0, 0, screenSize, screenSize), 0, 0); 
			
		RenderTexture.active = null;
		DestroyImmediate (rt);
		var bytes = screenShot.EncodeToPNG(); 
			
		var directory = "Assets/Skyboxes";
		if (!System.IO.Directory.Exists(directory))
		System.IO.Directory.CreateDirectory(directory);
		System.IO.File.WriteAllBytes (System.IO.Path.Combine(directory, skyBoxImage[orientation] + ".png"), bytes);  
		//
	}
	
	function renderSkyImage2(orientation : int, go : GameObject)
    {
		go.transform.eulerAngles = Vector3 (0,180,0);
		var screenSize = 1024;
		var rt = new RenderTexture (screenSize, screenSize, 24);
		go.camera.targetTexture = rt;
		var screenShot = new Texture2D (screenSize, screenSize, TextureFormat.RGB24, false);
		go.camera.Render();
		RenderTexture.active = rt;
		screenShot.ReadPixels (Rect (0, 0, screenSize, screenSize), 0, 0); 
			
		RenderTexture.active = null;
		DestroyImmediate (rt);
		var bytes = screenShot.EncodeToPNG(); 
			
		var directory = "Assets/Skyboxes";
		if (!System.IO.Directory.Exists(directory))
		System.IO.Directory.CreateDirectory(directory);
		System.IO.File.WriteAllBytes (System.IO.Path.Combine(directory, skyBoxImage[orientation] + ".png"), bytes);  
		//
	}
	
	function renderSkyImage3(orientation : int, go : GameObject)
    {
		go.transform.eulerAngles = Vector3 (0,90,0);
		var screenSize = 1024;
		var rt = new RenderTexture (screenSize, screenSize, 24);
		go.camera.targetTexture = rt;
		var screenShot = new Texture2D (screenSize, screenSize, TextureFormat.RGB24, false);
		go.camera.Render();
		RenderTexture.active = rt;
		screenShot.ReadPixels (Rect (0, 0, screenSize, screenSize), 0, 0); 
			
		RenderTexture.active = null;
		DestroyImmediate (rt);
		var bytes = screenShot.EncodeToPNG(); 
			
		var directory = "Assets/Skyboxes";
		if (!System.IO.Directory.Exists(directory))
		System.IO.Directory.CreateDirectory(directory);
		System.IO.File.WriteAllBytes (System.IO.Path.Combine(directory, skyBoxImage[orientation] + ".png"), bytes);  
		//
	}
	
	function renderSkyImage4(orientation : int, go : GameObject)
    {
		go.transform.eulerAngles = Vector3 (-90,0,0);
		var screenSize = 1024;
		var rt = new RenderTexture (screenSize, screenSize, 24);
		go.camera.targetTexture = rt;
		var screenShot = new Texture2D (screenSize, screenSize, TextureFormat.RGB24, false);
		go.camera.Render();
		RenderTexture.active = rt;
		screenShot.ReadPixels (Rect (0, 0, screenSize, screenSize), 0, 0); 
			
		RenderTexture.active = null;
		DestroyImmediate (rt);
		var bytes = screenShot.EncodeToPNG(); 
			
		var directory = "Assets/Skyboxes";
		if (!System.IO.Directory.Exists(directory))
		System.IO.Directory.CreateDirectory(directory);
		System.IO.File.WriteAllBytes (System.IO.Path.Combine(directory, skyBoxImage[orientation] + ".png"), bytes);  
		//
	}
	
	function renderSkyImage5(orientation : int, go : GameObject)
    {
		go.transform.eulerAngles = Vector3 (90,0,0);
		var screenSize = 1024;
		var rt = new RenderTexture (screenSize, screenSize, 24);
		go.camera.targetTexture = rt;
		var screenShot = new Texture2D (screenSize, screenSize, TextureFormat.RGB24, false);
		go.camera.Render();
		RenderTexture.active = rt;
		screenShot.ReadPixels (Rect (0, 0, screenSize, screenSize), 0, 0); 
			
		RenderTexture.active = null;
		DestroyImmediate (rt);
		var bytes = screenShot.EncodeToPNG(); 
			
		var directory = "Assets/Skyboxes";
		if (!System.IO.Directory.Exists(directory))
		System.IO.Directory.CreateDirectory(directory);
		System.IO.File.WriteAllBytes (System.IO.Path.Combine(directory, skyBoxImage[orientation] + ".png"), bytes);  
		//
	}
}