public static synchronized SolidNode from( Object thing, SourceLocation sLoc ) throws ScriptError {
		if( thing instanceof SolidNode ) return (SolidNode)thing;
		SolidNode n = nodesFromOtherThings.get(thing);
		if( n != null ) return n;
		if( thing instanceof SurfaceMaterial ) {
			thing = StandardMaterial.opaque( (SurfaceMaterial)thing );
		}
		if( thing instanceof GeneralMaterial ) {
			n = new HomogeneousSolidNode( (GeneralMaterial)thing );
		}
		if( n == null ) throw new ScriptError("Needed a SolidNode, but found a "+thing.getClass()+", which cannot be converted to a a SolidNode", sLoc);
		nodesFromOtherThings.put(thing, n);
		return n;
	}