Beispiel #1
0
        static void Main(string[] _args)
        {
// _args = new string[] {
//  "-height",
//  "../Example/heights.tga",
//  "-normal",
//  "../Example/normals.tga",
//  "-ao",
//  "../Example/occlusion3.png",
//  "-texsize",
//  "100",
//  "-dispsize",
//  "100",
//  "-rayscount",
//  "100",
//  "-range",
//  "10",
//  "-coneangle",
//  "180",
//  "-clamp",
//  "-bilateralRadius",
//  "4.0",
//  "-bilateralTolerance",
//  "0.2",
// };



            if (_args.Length == 0)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new GeneratorForm());
                return;
            }

            // Attach to command console
            AttachConsole(ATTACH_PARENT_PROCESS);

            // Arguments-driven generation
            GeneratorForm.BuildArguments buildArgs = new GeneratorForm.BuildArguments();
            try {
                for (int i = 0; i < _args.Length; i++)
                {
                    string arg = _args[i].ToLower().Trim();
                    if (arg.Length < 2)
                    {
                        throw new Exception("Invalid argument at position " + i);
                    }
                    if (arg[0] != '-')
                    {
                        throw new Exception("Argument \"" + arg + "\" missing heading '-' character");
                    }

                    switch (arg.Substring(1))
                    {
                    case "height":
                        buildArgs.heightMapFileName = ReadNextArg(_args, ref i);
                        break;

                    case "normal":
                        buildArgs.normalMapFileName = ReadNextArg(_args, ref i);
                        break;

                    case "ao":
                        buildArgs.AOMapFileName = ReadNextArg(_args, ref i);
                        break;

                    case "texsize":
                        buildArgs.textureSize_cm = ReadFloatArg(_args, ref i);
                        break;

                    case "dispsize":
                        buildArgs.displacementSize_cm = ReadFloatArg(_args, ref i);
                        break;

                    case "rayscount":
                        buildArgs.raysCount = ReadIntArg(_args, ref i);
                        break;

                    case "range":
                        buildArgs.searchRange = ReadIntArg(_args, ref i);
                        break;

                    case "coneangle":
                        buildArgs.coneAngle = ReadFloatArg(_args, ref i);
                        break;

                    case "clamp":
                        buildArgs.tile = false;
                        break;

                    case "bilateralradius":
                        buildArgs.bilateralRadius = ReadFloatArg(_args, ref i);
                        break;

                    case "bilateraltolerance":
                        buildArgs.bilateralTolerance = ReadFloatArg(_args, ref i);
                        break;

                    default:
                        throw new Exception("Unrecognized argument \"" + arg + "\" at position " + i);
                    }
                }

                if (buildArgs.heightMapFileName == null)
                {
                    throw new Exception("You failed to provide the mandatory height map name to generate AO for...");
                }
                if (buildArgs.AOMapFileName == null)
                {
                    throw new Exception("You failed to provide the mandatory target AO map name to save the results to...");
                }
            }
            catch (Exception _e) {
                Console.WriteLine("Unexpected argument parsing error: " + _e.Message + "\r\n\r\n"
                                  + "Usage: GenerateAmbientOcclusionMap.exe"
                                  + " -height \"path/to/heightmap\""
                                  + " -ao \"path/to/target/aomap\""
                                  + " [-normal \"path/to/normalmap\"]"
                                  + " [-texSize <physical texture size, in centimeters>]"
                                  + " [-dispSize <displacement size encoded by height map, in centimeters>]"
                                  + " [-raysCount <amount of rays per pixel>]"
                                  + " [-range <search range, in pixels>]"
                                  + " [-coneAngle <search cone aperture angle, in degrees>]"
                                  + " [-clamp]"
                                  + " [-bilateralRadius <bilateral filtering radius, in pixels>]"
                                  + " [-bilateralTolerance <bilateral filtering height tolerance>]"
                                  );
                return;
            }

            try {
                GeneratorForm F = new GeneratorForm();
                F.Build(buildArgs);
            } catch (Exception _e) {
                Console.WriteLine("An error occurred during AO map generation: " + _e.Message + "\r\n");
            }
        }
Beispiel #2
0
        static void Main( string[] _args )
        {
            // _args = new string[] {
            // 	"-height",
            // 	"../Example/heights.tga",
            // 	"-normal",
            // 	"../Example/normals.tga",
            // 	"-ao",
            // 	"../Example/occlusion3.png",
            // 	"-texsize",
            // 	"100",
            // 	"-dispsize",
            // 	"100",
            // 	"-rayscount",
            // 	"100",
            // 	"-range",
            // 	"10",
            // 	"-coneangle",
            // 	"180",
            // 	"-clamp",
            // 	"-bilateralRadius",
            // 	"4.0",
            // 	"-bilateralTolerance",
            // 	"0.2",
            // };

            if ( _args.Length == 0 ) {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault( false );
                Application.Run( new GeneratorForm() );
                return;
            }

            // Attach to command console
            AttachConsole( ATTACH_PARENT_PROCESS );

            // Arguments-driven generation
            GeneratorForm.BuildArguments	buildArgs = new GeneratorForm.BuildArguments();
            try {
                for ( int i=0; i < _args.Length; i++ ) {
                    string	arg = _args[i].ToLower().Trim();
                    if ( arg.Length < 2 )
                        throw new Exception( "Invalid argument at position " + i );
                    if ( arg[0] != '-' )
                        throw new Exception( "Argument \"" + arg + "\" missing heading '-' character" );

                    switch ( arg.Substring( 1 ) ) {
                        case "height":
                            buildArgs.heightMapFileName = ReadNextArg( _args, ref i );
                            break;
                        case "normal":
                            buildArgs.normalMapFileName = ReadNextArg( _args, ref i );
                            break;
                        case "ao":
                            buildArgs.AOMapFileName = ReadNextArg( _args, ref i );
                            break;
                        case "texsize":
                            buildArgs.textureSize_cm = ReadFloatArg( _args, ref i );
                            break;
                        case "dispsize":
                            buildArgs.displacementSize_cm = ReadFloatArg( _args, ref i );
                            break;
                        case "rayscount":
                            buildArgs.raysCount = ReadIntArg( _args, ref i );
                            break;
                        case "range":
                            buildArgs.searchRange = ReadIntArg( _args, ref i );
                            break;
                        case "coneangle":
                            buildArgs.coneAngle = ReadFloatArg( _args, ref i );
                            break;
                        case "clamp":
                            buildArgs.tile = false;
                            break;
                        case "bilateralradius":
                            buildArgs.bilateralRadius = ReadFloatArg( _args, ref i );
                            break;
                        case "bilateraltolerance":
                            buildArgs.bilateralTolerance = ReadFloatArg( _args, ref i );
                            break;

                        default:
                            throw new Exception( "Unrecognized argument \"" + arg + "\" at position " + i );
                    }
                }

                if ( buildArgs.heightMapFileName == null )
                    throw new Exception( "You failed to provide the mandatory height map name to generate AO for..." );
                if ( buildArgs.AOMapFileName == null )
                    throw new Exception( "You failed to provide the mandatory target AO map name to save the results to..." );
            }
            catch ( Exception _e ) {
                Console.WriteLine( "Unexpected argument parsing error: " + _e.Message + "\r\n\r\n"
                    + "Usage: GenerateAmbientOcclusionMap.exe"
                    + " -height \"path/to/heightmap\""
                    + " -ao \"path/to/target/aomap\""
                    + " [-normal \"path/to/normalmap\"]"
                    + " [-texSize <physical texture size, in centimeters>]"
                    + " [-dispSize <displacement size encoded by height map, in centimeters>]"
                    + " [-raysCount <amount of rays per pixel>]"
                    + " [-range <search range, in pixels>]"
                    + " [-coneAngle <search cone aperture angle, in degrees>]"
                    + " [-clamp]"
                    + " [-bilateralRadius <bilateral filtering radius, in pixels>]"
                    + " [-bilateralTolerance <bilateral filtering height tolerance>]"
                    );
                return;
            }

            try {
                GeneratorForm	F = new GeneratorForm();
                F.Build( buildArgs );
            } catch ( Exception _e ) {
                Console.WriteLine( "An error occurred during AO map generation: " + _e.Message + "\r\n" );
            }
        }