diff --git a/.gitmodules b/.gitmodules index 590ed7ec4..06a89c419 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,33 +1,33 @@ -[submodule "worldgen/infinigen_gpl"] - path = worldgen/infinigen_gpl +[submodule "infinigen/infinigen_gpl"] + path = infinigen/infinigen_gpl url = https://github.com/princeton-vl/infinigen_gpl.git -[submodule "process_mesh/dependencies/eigen"] - path = process_mesh/dependencies/eigen +[submodule "infinigen/datagen/custom_ground_truth/dependencies/eigen"] + path = infinigen/datagen/custom_ground_truth/dependencies/eigen url = https://gitlab.com/libeigen/eigen.git -[submodule "process_mesh/dependencies/argparse"] - path = process_mesh/dependencies/argparse +[submodule "infinigen/datagen/custom_ground_truth/dependencies/argparse"] + path = infinigen/datagen/custom_ground_truth/dependencies/argparse url = https://github.com/p-ranav/argparse.git -[submodule "process_mesh/dependencies/cnpy"] - path = process_mesh/dependencies/cnpy +[submodule "infinigen/datagen/custom_ground_truth/dependencies/cnpy"] + path = infinigen/datagen/custom_ground_truth/dependencies/cnpy url = https://github.com/rogersce/cnpy.git -[submodule "process_mesh/dependencies/indicators"] - path = process_mesh/dependencies/indicators +[submodule "infinigen/datagen/custom_ground_truth/dependencies/indicators"] + path = infinigen/datagen/custom_ground_truth/dependencies/indicators url = https://github.com/p-ranav/indicators.git -[submodule "process_mesh/dependencies/tinycolormap"] - path = process_mesh/dependencies/tinycolormap +[submodule "infinigen/datagen/custom_ground_truth/dependencies/tinycolormap"] + path = infinigen/datagen/custom_ground_truth/dependencies/tinycolormap url = https://github.com/yuki-koyama/tinycolormap.git -[submodule "process_mesh/dependencies/glm"] - path = process_mesh/dependencies/glm +[submodule "infinigen/datagen/custom_ground_truth/dependencies/glm"] + path = infinigen/datagen/custom_ground_truth/dependencies/glm url = https://github.com/g-truc/glm.git -[submodule "process_mesh/dependencies/fast_obj"] - path = process_mesh/dependencies/fast_obj +[submodule "infinigen/datagen/custom_ground_truth/dependencies/fast_obj"] + path = infinigen/datagen/custom_ground_truth/dependencies/fast_obj url = https://github.com/thisistherk/fast_obj.git -[submodule "process_mesh/dependencies/json"] - path = process_mesh/dependencies/json +[submodule "infinigen/datagen/custom_ground_truth/dependencies/json"] + path = infinigen/datagen/custom_ground_truth/dependencies/json url = https://github.com/nlohmann/json.git -[submodule "process_mesh/dependencies/stb"] - path = process_mesh/dependencies/stb +[submodule "infinigen/datagen/custom_ground_truth/dependencies/stb"] + path = infinigen/datagen/custom_ground_truth/dependencies/stb url = https://github.com/nothings/stb.git -[submodule "process_mesh/dependencies/glfw"] - path = process_mesh/dependencies/glfw +[submodule "infinigen/datagen/custom_ground_truth/dependencies/glfw"] + path = infinigen/datagen/custom_ground_truth/dependencies/glfw url = https://github.com/glfw/glfw.git diff --git a/docs/ConfiguringInfinigen.md b/docs/ConfiguringInfinigen.md index b0e89004c..e4bdc58a5 100644 --- a/docs/ConfiguringInfinigen.md +++ b/docs/ConfiguringInfinigen.md @@ -7,8 +7,8 @@ This document explains how to configure various features of Infinigen. It assume ## Overview Generating scenes with Infinigen typically involves two main python scripts: -1. [generate.py](../worldgen/generate.py) - our example scene composition script, which invokes and places assets to create a realistic nature scene. -1. [manage_datagen_jobs.py](../worldgen/tools/manage_datagen_jobs.py) - a script which invokes the above scene composition script many times to generate a useful dataset. +1. [examples/generate_nature.py](../examples/generate_nature.py) - our example scene composition script, which invokes and places assets to create a realistic nature scene. +1. [manage_jobs.py](../infinigen/datagen/manage_jobs.py) - a script which invokes the above scene composition script many times to generate a useful dataset. `manage_datagen_jobs.py` controls how many and what jobs will be run, and `generate.py` determines what will happen during those jobs. Ultimately both programs must be configured correctly in order to make useful data. @@ -47,7 +47,7 @@ Now that you understand the two major python programs and how to configure them, ``` # Original hello world command -python -m tools.manage_datagen_jobs --output_folder outputs/hello_world --num_scenes 1 --specific_seed 0 \ +python -m infinigen.datagen.manage_jobs --output_folder outputs/hello_world --num_scenes 1 --specific_seed 0 \ --configs desert.gin simple.gin --pipeline_configs local_16GB.gin monocular.gin blender_gt.gin \ --pipeline_overrides LocalScheduleHandler.use_gpu=False ``` @@ -156,7 +156,7 @@ Some scene type configs are also generally more expensive than others. `forest.g ### Other `manage_datagen_jobs.py` commandline options -Please run `pythom -m tools.manage_datagen_jobs --help` for an up-to-date description of other commandline arguments. We always use `--cleanup big_files --warmup_sec 30000` for large render jobs. Optionally, you can also log render progress to Weights & Biases. +Please run `pythom -m infinigen.datagen.manage_jobs --help` for an up-to-date description of other commandline arguments. We always use `--cleanup big_files --warmup_sec 30000` for large render jobs. Optionally, you can also log render progress to Weights & Biases. ## Example Commands @@ -171,7 +171,7 @@ All commands below are shown with using `local_256GB` config, but you can attemp Most videos in the "Introducing Infinigen" launch video were made using commands similar to the following: ```` -python -m tools.manage_datagen_jobs --output_folder outputs/my_videos --num_scenes 500 \ +python -m infinigen.datagen.manage_jobs --output_folder outputs/my_videos --num_scenes 500 \ --pipeline_config slurm monocular_video cuda_terrain opengl_gt \ --cleanup big_files --warmup_sec 60000 --config high_quality_terrain ```` @@ -179,7 +179,7 @@ python -m tools.manage_datagen_jobs --output_folder outputs/my_videos --num_scen #### Creating large-scale stereo datasets ```` -python -m tools.manage_datagen_jobs --output_folder outputs/stereo_data --num_scenes 10000 \ +python -m infinigen.datagen.manage_jobs --output_folder outputs/stereo_data --num_scenes 10000 \ --pipeline_config slurm stereo cuda_terrain opengl_gt \ --cleanup big_files --warmup_sec 60000 --config high_quality_terrain ```` @@ -187,7 +187,7 @@ python -m tools.manage_datagen_jobs --output_folder outputs/stereo_data --num_sc #### Creating a few low-resolution images to your test changes ``` -screen python -m tools.manage_datagen_jobs --output_folder outputs/dev --num_scenes 50 \ +screen python -m infinigen.datagen.manage_jobs --output_folder outputs/dev --num_scenes 50 \ --pipeline_config slurm monocular cuda_terrain \ --cleanup big_files --warmup_sec 1200 --configs dev ``` @@ -198,7 +198,7 @@ These commands are intended as inspiration - please read docs above for more adv Create images that always have rain: ``` -python -m tools.manage_datagen_jobs --output_folder outputs/my_videos --num_scenes 500 \ +python -m infinigen.datagen.manage_jobs --output_folder outputs/my_videos --num_scenes 500 \ --pipeline_config slurm monocular cuda_terrain opengl_gt \ --cleanup big_files --warmup_sec 30000 \ --overrides compose_scene.rain_particles_chance=1.0 @@ -208,7 +208,7 @@ python -m tools.manage_datagen_jobs --output_folder outputs/my_videos --num_scen Create images that only have terrain: ``` -python -m tools.manage_datagen_jobs --output_folder outputs/my_videos --num_scenes 500 \ +python -m infinigen.datagen.manage_jobs --output_folder outputs/my_videos --num_scenes 500 \ --pipeline_config slurm monocular cuda_terrain opengl_gt \ --cleanup big_files --warmup_sec 30000 --config no_assets ``` @@ -217,7 +217,7 @@ python -m tools.manage_datagen_jobs --output_folder outputs/my_videos --num_scen Create videos at birds-eye-view camera altitudes: ``` -python -m tools.manage_datagen_jobs --output_folder outputs/my_videos --num_scenes 500 \ +python -m infinigen.datagen.manage_jobs --output_folder outputs/my_videos --num_scenes 500 \ --pipeline_config slurm monocular_video cuda_terrain opengl_gt \ --cleanup big_files --warmup_sec 30000 --config high_quality_terrain \ --overrides camera.camera_pose_proposal.altitude=["uniform", 20, 30] @@ -227,7 +227,7 @@ python -m tools.manage_datagen_jobs --output_folder outputs/my_videos --num_scen Create 1 second video clips: ``` -python -m tools.manage_datagen_jobs --output_folder outputs/my_videos --num_scenes 500 \ +python -m infinigen.datagen.manage_jobs --output_folder outputs/my_videos --num_scenes 500 \ --pipeline_config slurm monocular_video cuda_terrain opengl_gt \ --cleanup big_files --warmup_sec 30000 --config high_quality_terrain \ --pipeline_overrides iterate_scene_tasks.frame_range=[1,25] diff --git a/docs/GeneratingFluidSimulations.md b/docs/GeneratingFluidSimulations.md index d04517427..1c62e2f47 100644 --- a/docs/GeneratingFluidSimulations.md +++ b/docs/GeneratingFluidSimulations.md @@ -10,13 +10,13 @@ To generate fluids, you run install.sh with the optional FLIP-Fluids setup step #### Generate a video of a single scene with simulated fire generated on the fly ``` -python -m tools.manage_datagen_jobs --specific_seed 3930249d --output_folder outputs/fire --num_scenes 1 --pipeline_config local_256GB.gin monocular_video.gin --cleanup none --config plain.gin fast_terrain_assets.gin use_on_the_fly_fire.gin +python -m infinigen.datagen.manage_jobs --specific_seed 3930249d --output_folder outputs/fire --num_scenes 1 --pipeline_config local_256GB.gin monocular_video.gin --cleanup none --config plain.gin fast_terrain_assets.gin use_on_the_fly_fire.gin ``` Because fluid simulation takes a long time, the fire resolution can be reduced in use_on_the_fly_fire.gin, by setting `set_obj_on_fire.resolution = {resolution}`. This will reduce the fire quality but speed up the simulation. #### Generate a video of a single valley scene with simulated river ``` -python -m tools.manage_datagen_jobs --specific_seed 1c95bb72 --output_folder outputs/river --num_scenes 1 --pipeline_config local_256GB.gin monocular_video.gin opengl_gt.gin cuda_terrain.gin --pipeline_overrides iterate_scene_tasks.frame_range=[150,200] --config river.gin simulated_river.gin no_assets.gin no_creatures.gin fast_terrain_assets.gin --cleanup none +python -m infinigen.datagen.manage_jobs --specific_seed 61fc881a --output_folder outputs/river --num_scenes 1 --pipeline_config local_256GB.gin monocular_video.gin opengl_gt.gin cuda_terrain.gin --pipeline_overrides iterate_scene_tasks.frame_range=[100,244] --config river.gin simulated_river.gin no_assets.gin no_creatures.gin fast_terrain_assets.gin --cleanup none ``` Similar to fire, the simulation can be sped up by reducing the resolution. In simulated_river.gin, the resolution can be modified by setting `make_river.resolution = {resolution}`. The simulation can also be sped up by reducing the simulation duration in simulated_river.gin by setting `make_river.simulation_duration = {duration}`. For instance, before running the command above, the duration can be reduced to a number greater than 200 since that is the last frame of the video. @@ -24,7 +24,7 @@ Also, note that this command will produce a scene without assets to speed up the #### Generate videos of random scene types, with simulated fire generated on the fly when needed ``` -python -m tools.manage_datagen_jobs --output_folder outputs/onthefly --num_scenes 10 \ +python -m infinigen.datagen.manage_jobs --output_folder outputs/onthefly --num_scenes 10 \ --pipeline_config slurm_high_memory.gin monocular_video.gin \ --config fast_terrain_assets.gin use_on_the_fly_fire.gin \ --cleanup none --warmup_sec 12000 @@ -32,7 +32,7 @@ python -m tools.manage_datagen_jobs --output_folder outputs/onthefly --num_scen #### Generate videos of valley scenes with simulated rivers ``` -python -m tools.manage_datagen_jobs --output_folder /n/fs/pvl-renders/kkayan/river --num_scenes 10 \ +python -m infinigen.datagen.manage_jobs --output_folder /n/fs/pvl-renders/kkayan/river --num_scenes 10 \ --pipeline_config slurm_high_memory.gin monocular_video.gin opengl_gt.gin cuda_terrain.gin \ --pipeline_overrides iterate_scene_tasks.frame_range=[100,244] \ --config simulated_river.gin no_assets.gin no_creatures.gin fast_terrain_assets.gin \ diff --git a/docs/GeneratingIndividualAssets.md b/docs/GeneratingIndividualAssets.md index 0fe8b5275..bfd43b93f 100644 --- a/docs/GeneratingIndividualAssets.md +++ b/docs/GeneratingIndividualAssets.md @@ -3,7 +3,7 @@ This tutorial will help you generate images or .blend files of specific assets of your choice. Limitations (to be addressed soon): -- This tool only exports .blend files. [See here](../worldgen/tools/export/README.md) for a prototype tool to convert these to standard mesh file formats, but it itself has some limitations. +- This tool only exports .blend files. [See here](../infinigen/datagen/tools/export/README.md) for a prototype tool to convert these to standard mesh file formats, but it itself has some limitations. - This tool cannot currently generate or export terrain meshes. ### Example Commands diff --git a/docs/HelloWorld.md b/docs/HelloWorld.md index f04b24f39..354aff9b8 100644 --- a/docs/HelloWorld.md +++ b/docs/HelloWorld.md @@ -40,7 +40,7 @@ Output logs should indicate what the code is working on. Use `--debug` for even We provide `tools/manage_datagen_jobs.py`, a utility which runs similar steps automatically. ``` -python -m tools.manage_datagen_jobs --output_folder outputs/hello_world --num_scenes 1 --specific_seed 0 \ +python -m infinigen.datagen.manage_jobs --output_folder outputs/hello_world --num_scenes 1 --specific_seed 0 \ --configs desert.gin simple.gin --pipeline_configs local_16GB.gin monocular.gin blender_gt.gin --pipeline_overrides LocalScheduleHandler.use_gpu=False ``` diff --git a/worldgen/config/.gitignore b/examples/configs/.gitignore similarity index 100% rename from worldgen/config/.gitignore rename to examples/configs/.gitignore diff --git a/worldgen/config/asset_demo.gin b/examples/configs/asset_demo.gin similarity index 100% rename from worldgen/config/asset_demo.gin rename to examples/configs/asset_demo.gin diff --git a/worldgen/config/base.gin b/examples/configs/base.gin similarity index 100% rename from worldgen/config/base.gin rename to examples/configs/base.gin diff --git a/worldgen/config/base_surface_registry.gin b/examples/configs/base_surface_registry.gin similarity index 100% rename from worldgen/config/base_surface_registry.gin rename to examples/configs/base_surface_registry.gin diff --git a/worldgen/config/disable_assets/no_assets.gin b/examples/configs/disable_assets/no_assets.gin similarity index 100% rename from worldgen/config/disable_assets/no_assets.gin rename to examples/configs/disable_assets/no_assets.gin diff --git a/worldgen/config/disable_assets/no_creatures.gin b/examples/configs/disable_assets/no_creatures.gin similarity index 100% rename from worldgen/config/disable_assets/no_creatures.gin rename to examples/configs/disable_assets/no_creatures.gin diff --git a/worldgen/config/disable_assets/no_particles.gin b/examples/configs/disable_assets/no_particles.gin similarity index 100% rename from worldgen/config/disable_assets/no_particles.gin rename to examples/configs/disable_assets/no_particles.gin diff --git a/worldgen/config/disable_assets/no_rocks.gin b/examples/configs/disable_assets/no_rocks.gin similarity index 100% rename from worldgen/config/disable_assets/no_rocks.gin rename to examples/configs/disable_assets/no_rocks.gin diff --git a/worldgen/config/experimental.gin b/examples/configs/experimental.gin similarity index 100% rename from worldgen/config/experimental.gin rename to examples/configs/experimental.gin diff --git a/worldgen/config/monocular.gin b/examples/configs/monocular.gin similarity index 100% rename from worldgen/config/monocular.gin rename to examples/configs/monocular.gin diff --git a/worldgen/config/natural.gin b/examples/configs/natural.gin similarity index 100% rename from worldgen/config/natural.gin rename to examples/configs/natural.gin diff --git a/worldgen/config/palette/desert.json b/examples/configs/palette/desert.json similarity index 100% rename from worldgen/config/palette/desert.json rename to examples/configs/palette/desert.json diff --git a/worldgen/config/palette/mountain soil.json b/examples/configs/palette/mountain soil.json similarity index 100% rename from worldgen/config/palette/mountain soil.json rename to examples/configs/palette/mountain soil.json diff --git a/worldgen/config/palette/sandstone.json b/examples/configs/palette/sandstone.json similarity index 100% rename from worldgen/config/palette/sandstone.json rename to examples/configs/palette/sandstone.json diff --git a/worldgen/config/palette/water.json b/examples/configs/palette/water.json similarity index 100% rename from worldgen/config/palette/water.json rename to examples/configs/palette/water.json diff --git a/worldgen/config/performance/dev.gin b/examples/configs/performance/dev.gin similarity index 100% rename from worldgen/config/performance/dev.gin rename to examples/configs/performance/dev.gin diff --git a/worldgen/config/performance/fast_terrain_assets.gin b/examples/configs/performance/fast_terrain_assets.gin similarity index 100% rename from worldgen/config/performance/fast_terrain_assets.gin rename to examples/configs/performance/fast_terrain_assets.gin diff --git a/worldgen/config/performance/high_quality_terrain.gin b/examples/configs/performance/high_quality_terrain.gin similarity index 100% rename from worldgen/config/performance/high_quality_terrain.gin rename to examples/configs/performance/high_quality_terrain.gin diff --git a/worldgen/config/performance/reuse_terrain_assets.gin b/examples/configs/performance/reuse_terrain_assets.gin similarity index 100% rename from worldgen/config/performance/reuse_terrain_assets.gin rename to examples/configs/performance/reuse_terrain_assets.gin diff --git a/worldgen/config/performance/simple.gin b/examples/configs/performance/simple.gin similarity index 100% rename from worldgen/config/performance/simple.gin rename to examples/configs/performance/simple.gin diff --git a/worldgen/config/scene_types/arctic.gin b/examples/configs/scene_types/arctic.gin similarity index 100% rename from worldgen/config/scene_types/arctic.gin rename to examples/configs/scene_types/arctic.gin diff --git a/worldgen/config/scene_types/canyon.gin b/examples/configs/scene_types/canyon.gin similarity index 100% rename from worldgen/config/scene_types/canyon.gin rename to examples/configs/scene_types/canyon.gin diff --git a/worldgen/config/scene_types/cave.gin b/examples/configs/scene_types/cave.gin similarity index 100% rename from worldgen/config/scene_types/cave.gin rename to examples/configs/scene_types/cave.gin diff --git a/worldgen/config/scene_types/cliff.gin b/examples/configs/scene_types/cliff.gin similarity index 100% rename from worldgen/config/scene_types/cliff.gin rename to examples/configs/scene_types/cliff.gin diff --git a/worldgen/config/scene_types/coast.gin b/examples/configs/scene_types/coast.gin similarity index 100% rename from worldgen/config/scene_types/coast.gin rename to examples/configs/scene_types/coast.gin diff --git a/worldgen/config/scene_types/coral_reef.gin b/examples/configs/scene_types/coral_reef.gin similarity index 100% rename from worldgen/config/scene_types/coral_reef.gin rename to examples/configs/scene_types/coral_reef.gin diff --git a/worldgen/config/scene_types/desert.gin b/examples/configs/scene_types/desert.gin similarity index 100% rename from worldgen/config/scene_types/desert.gin rename to examples/configs/scene_types/desert.gin diff --git a/worldgen/config/scene_types/forest.gin b/examples/configs/scene_types/forest.gin similarity index 100% rename from worldgen/config/scene_types/forest.gin rename to examples/configs/scene_types/forest.gin diff --git a/worldgen/config/scene_types/kelp_forest.gin b/examples/configs/scene_types/kelp_forest.gin similarity index 100% rename from worldgen/config/scene_types/kelp_forest.gin rename to examples/configs/scene_types/kelp_forest.gin diff --git a/worldgen/config/scene_types/mountain.gin b/examples/configs/scene_types/mountain.gin similarity index 100% rename from worldgen/config/scene_types/mountain.gin rename to examples/configs/scene_types/mountain.gin diff --git a/worldgen/config/scene_types/plain.gin b/examples/configs/scene_types/plain.gin similarity index 100% rename from worldgen/config/scene_types/plain.gin rename to examples/configs/scene_types/plain.gin diff --git a/worldgen/config/scene_types/river.gin b/examples/configs/scene_types/river.gin similarity index 100% rename from worldgen/config/scene_types/river.gin rename to examples/configs/scene_types/river.gin diff --git a/worldgen/config/scene_types/snowy_mountain.gin b/examples/configs/scene_types/snowy_mountain.gin similarity index 100% rename from worldgen/config/scene_types/snowy_mountain.gin rename to examples/configs/scene_types/snowy_mountain.gin diff --git a/worldgen/config/scene_types/under_water.gin b/examples/configs/scene_types/under_water.gin similarity index 100% rename from worldgen/config/scene_types/under_water.gin rename to examples/configs/scene_types/under_water.gin diff --git a/worldgen/config/scene_types_fluidsim/simulated_river.gin b/examples/configs/scene_types_fluidsim/simulated_river.gin similarity index 100% rename from worldgen/config/scene_types_fluidsim/simulated_river.gin rename to examples/configs/scene_types_fluidsim/simulated_river.gin diff --git a/worldgen/config/scene_types_fluidsim/tilted_river.gin b/examples/configs/scene_types_fluidsim/tilted_river.gin similarity index 100% rename from worldgen/config/scene_types_fluidsim/tilted_river.gin rename to examples/configs/scene_types_fluidsim/tilted_river.gin diff --git a/worldgen/config/stereo_training.gin b/examples/configs/stereo_training.gin similarity index 100% rename from worldgen/config/stereo_training.gin rename to examples/configs/stereo_training.gin diff --git a/worldgen/config/use_cached_fire.gin b/examples/configs/use_cached_fire.gin similarity index 100% rename from worldgen/config/use_cached_fire.gin rename to examples/configs/use_cached_fire.gin diff --git a/worldgen/config/use_on_the_fly_fire.gin b/examples/configs/use_on_the_fly_fire.gin similarity index 100% rename from worldgen/config/use_on_the_fly_fire.gin rename to examples/configs/use_on_the_fly_fire.gin diff --git a/worldgen/asset_demo.py b/examples/generate_asset_demo.py similarity index 100% rename from worldgen/asset_demo.py rename to examples/generate_asset_demo.py diff --git a/worldgen/tools/generate_individual_assets.py b/examples/generate_individual_assets.py similarity index 100% rename from worldgen/tools/generate_individual_assets.py rename to examples/generate_individual_assets.py diff --git a/worldgen/generate.py b/examples/generate_nature.py similarity index 100% rename from worldgen/generate.py rename to examples/generate_nature.py diff --git a/examples/scripts/render_river_video.sh b/examples/scripts/render_river_video.sh new file mode 100644 index 000000000..ad627d111 --- /dev/null +++ b/examples/scripts/render_river_video.sh @@ -0,0 +1,11 @@ +# TEMP. REMOVE BEFORE MERGE. + +HOSTFIRST=$(hostname | tr "." "\n" | head -n 1) +JOBNAME=$(date '+%m_%d_%H_%M').$HOSTFIRST.$1 +if [ "$2" = "dev" ]; then + python -m infinigen.datagen.manage_jobs --output_folder $3/$JOBNAME --num_scenes 20 \ + --pipeline_config $1 monocular_video_river enable_gpu opengl_gt --wandb_mode online --cleanup none --warmup_sec 12000 --config trailer_river dev reuse_terrain_assets simulated_river +else + python -m infinigen.datagen.manage_jobs --output_folder $3/$JOBNAME --num_scenes 50 \ + --pipeline_config $1 monocular_video_river enable_gpu opengl_gt --wandb_mode online --cleanup big_files --warmup_sec 12000 --config trailer_river reuse_terrain_assets simulated_river high_quality_terrain +fi diff --git a/worldgen/tools/scripts/render_video_1080p.sh b/examples/scripts/render_video_1080p.sh similarity index 79% rename from worldgen/tools/scripts/render_video_1080p.sh rename to examples/scripts/render_video_1080p.sh index fb7271bba..091819072 100644 --- a/worldgen/tools/scripts/render_video_1080p.sh +++ b/examples/scripts/render_video_1080p.sh @@ -1,7 +1,7 @@ HOSTFIRST=$(hostname | tr "." "\n" | head -n 1) JOBNAME=$(date '+%m_%d_%H_%M').$HOSTFIRST.$1 -python -m tools.manage_datagen_jobs --output_folder outputs/$JOBNAME \ +python -m infinigen.datagen.manage_jobs --output_folder outputs/$JOBNAME \ --num_scenes 100 --pipeline_config $@ stereo_video cuda_terrain opengl_gt_noshortrender \ --wandb_mode online --cleanup big_files \ --warmup_sec 40000 \ diff --git a/worldgen/tools/scripts/render_video_720p.sh b/examples/scripts/render_video_720p.sh similarity index 82% rename from worldgen/tools/scripts/render_video_720p.sh rename to examples/scripts/render_video_720p.sh index 7e8a6ca0f..9e75769f1 100644 --- a/worldgen/tools/scripts/render_video_720p.sh +++ b/examples/scripts/render_video_720p.sh @@ -1,7 +1,7 @@ HOSTFIRST=$(hostname | tr "." "\n" | head -n 1) JOBNAME=$(date '+%m_%d_%H_%M').$HOSTFIRST.$1 -python -m tools.manage_datagen_jobs --output_folder outputs/$JOBNAME \ +python -m infinigen.datagen.manage_jobs --output_folder outputs/$JOBNAME \ --num_scenes 1000 --pipeline_config $@ stereo_video cuda_terrain opengl_gt upload \ --wandb_mode online --cleanup except_crashed --warmup_sec 25000 \ --config high_quality_terrain \ diff --git a/examples/scripts/render_video_fire.sh b/examples/scripts/render_video_fire.sh new file mode 100644 index 000000000..874d665e6 --- /dev/null +++ b/examples/scripts/render_video_fire.sh @@ -0,0 +1,6 @@ +# TEMP. REMOVE BEFORE MERGE. + +HOSTFIRST=$(hostname | tr "." "\n" | head -n 1) +JOBNAME=$(date '+%m_%d_%H_%M').$HOSTFIRST.$1 +python -m infinigen.datagen.manage_jobs --output_folder $3/$JOBNAME --num_scenes $2 \ + --pipeline_config $1 monocular_video enable_gpu opengl_gt --wandb_mode online --cleanup none --warmup_sec 10000 --config trailer high_quality_terrain reuse_terrain_assets use_on_the_fly_fire diff --git a/worldgen/tools/scripts/render_video_stereo.sh b/examples/scripts/render_video_stereo.sh similarity index 79% rename from worldgen/tools/scripts/render_video_stereo.sh rename to examples/scripts/render_video_stereo.sh index bb41420ce..8a302937e 100644 --- a/worldgen/tools/scripts/render_video_stereo.sh +++ b/examples/scripts/render_video_stereo.sh @@ -1,7 +1,7 @@ HOSTFIRST=$(hostname | tr "." "\n" | head -n 1) JOBNAME=$(date '+%m_%d_%H_%M').$HOSTFIRST.$1 -python -m tools.manage_datagen_jobs --output_folder outputs/$JOBNAME \ +python -m infinigen.datagen.manage_jobs --output_folder outputs/$JOBNAME \ --num_scenes 1000 --pipeline_config stereo_video $@ cuda_terrain opengl_gt upload \ --wandb_mode online --cleanup except_logs --warmup_sec 35000 \ --configs high_quality_terrain diff --git a/worldgen/__init__.py b/infinigen/__init__.py similarity index 100% rename from worldgen/__init__.py rename to infinigen/__init__.py diff --git a/worldgen/assets/__init__.py b/infinigen/assets/__init__.py similarity index 100% rename from worldgen/assets/__init__.py rename to infinigen/assets/__init__.py diff --git a/worldgen/assets/cactus/__init__.py b/infinigen/assets/cactus/__init__.py similarity index 100% rename from worldgen/assets/cactus/__init__.py rename to infinigen/assets/cactus/__init__.py diff --git a/worldgen/assets/cactus/base.py b/infinigen/assets/cactus/base.py similarity index 100% rename from worldgen/assets/cactus/base.py rename to infinigen/assets/cactus/base.py diff --git a/worldgen/assets/cactus/columnar.py b/infinigen/assets/cactus/columnar.py similarity index 100% rename from worldgen/assets/cactus/columnar.py rename to infinigen/assets/cactus/columnar.py diff --git a/worldgen/assets/cactus/generate.py b/infinigen/assets/cactus/generate.py similarity index 100% rename from worldgen/assets/cactus/generate.py rename to infinigen/assets/cactus/generate.py diff --git a/worldgen/assets/cactus/globular.py b/infinigen/assets/cactus/globular.py similarity index 100% rename from worldgen/assets/cactus/globular.py rename to infinigen/assets/cactus/globular.py diff --git a/worldgen/assets/cactus/kalidium.py b/infinigen/assets/cactus/kalidium.py similarity index 100% rename from worldgen/assets/cactus/kalidium.py rename to infinigen/assets/cactus/kalidium.py diff --git a/worldgen/assets/cactus/pricky_pear.py b/infinigen/assets/cactus/pricky_pear.py similarity index 100% rename from worldgen/assets/cactus/pricky_pear.py rename to infinigen/assets/cactus/pricky_pear.py diff --git a/worldgen/assets/cactus/spike.py b/infinigen/assets/cactus/spike.py similarity index 100% rename from worldgen/assets/cactus/spike.py rename to infinigen/assets/cactus/spike.py diff --git a/worldgen/assets/creatures/README.md b/infinigen/assets/creatures/README.md similarity index 100% rename from worldgen/assets/creatures/README.md rename to infinigen/assets/creatures/README.md diff --git a/worldgen/assets/creatures/__init__.py b/infinigen/assets/creatures/__init__.py similarity index 100% rename from worldgen/assets/creatures/__init__.py rename to infinigen/assets/creatures/__init__.py diff --git a/worldgen/assets/creatures/genomes/beetle.py b/infinigen/assets/creatures/beetle.py similarity index 100% rename from worldgen/assets/creatures/genomes/beetle.py rename to infinigen/assets/creatures/beetle.py diff --git a/worldgen/assets/creatures/genomes/bird.py b/infinigen/assets/creatures/bird.py similarity index 100% rename from worldgen/assets/creatures/genomes/bird.py rename to infinigen/assets/creatures/bird.py diff --git a/worldgen/assets/creatures/genomes/carnivore.py b/infinigen/assets/creatures/carnivore.py similarity index 100% rename from worldgen/assets/creatures/genomes/carnivore.py rename to infinigen/assets/creatures/carnivore.py diff --git a/worldgen/assets/creatures/genomes/crustacean.py b/infinigen/assets/creatures/crustacean.py similarity index 100% rename from worldgen/assets/creatures/genomes/crustacean.py rename to infinigen/assets/creatures/crustacean.py diff --git a/worldgen/assets/creatures/genomes/fish.py b/infinigen/assets/creatures/fish.py similarity index 100% rename from worldgen/assets/creatures/genomes/fish.py rename to infinigen/assets/creatures/fish.py diff --git a/worldgen/assets/creatures/genomes/herbivore.py b/infinigen/assets/creatures/herbivore.py similarity index 100% rename from worldgen/assets/creatures/genomes/herbivore.py rename to infinigen/assets/creatures/herbivore.py diff --git a/worldgen/assets/insects/__init__.py b/infinigen/assets/creatures/insects/__init__.py similarity index 100% rename from worldgen/assets/insects/__init__.py rename to infinigen/assets/creatures/insects/__init__.py diff --git a/worldgen/assets/insects/assembled/dragonfly.py b/infinigen/assets/creatures/insects/assembled/dragonfly.py similarity index 100% rename from worldgen/assets/insects/assembled/dragonfly.py rename to infinigen/assets/creatures/insects/assembled/dragonfly.py diff --git a/worldgen/assets/insects/parts/antenna/dragonfly_antenna.py b/infinigen/assets/creatures/insects/parts/antenna/dragonfly_antenna.py similarity index 100% rename from worldgen/assets/insects/parts/antenna/dragonfly_antenna.py rename to infinigen/assets/creatures/insects/parts/antenna/dragonfly_antenna.py diff --git a/worldgen/assets/insects/parts/body/dragonfly_body.py b/infinigen/assets/creatures/insects/parts/body/dragonfly_body.py similarity index 100% rename from worldgen/assets/insects/parts/body/dragonfly_body.py rename to infinigen/assets/creatures/insects/parts/body/dragonfly_body.py diff --git a/worldgen/assets/insects/parts/eye/dragonfly_eye.py b/infinigen/assets/creatures/insects/parts/eye/dragonfly_eye.py similarity index 100% rename from worldgen/assets/insects/parts/eye/dragonfly_eye.py rename to infinigen/assets/creatures/insects/parts/eye/dragonfly_eye.py diff --git a/worldgen/assets/insects/parts/hair/principled_hair.py b/infinigen/assets/creatures/insects/parts/hair/principled_hair.py similarity index 100% rename from worldgen/assets/insects/parts/hair/principled_hair.py rename to infinigen/assets/creatures/insects/parts/hair/principled_hair.py diff --git a/worldgen/assets/insects/parts/head/dragonfly_head.py b/infinigen/assets/creatures/insects/parts/head/dragonfly_head.py similarity index 100% rename from worldgen/assets/insects/parts/head/dragonfly_head.py rename to infinigen/assets/creatures/insects/parts/head/dragonfly_head.py diff --git a/worldgen/assets/insects/parts/leg/dragonfly_leg.py b/infinigen/assets/creatures/insects/parts/leg/dragonfly_leg.py similarity index 100% rename from worldgen/assets/insects/parts/leg/dragonfly_leg.py rename to infinigen/assets/creatures/insects/parts/leg/dragonfly_leg.py diff --git a/worldgen/assets/insects/parts/mouth/dragonfly_mouth.py b/infinigen/assets/creatures/insects/parts/mouth/dragonfly_mouth.py similarity index 100% rename from worldgen/assets/insects/parts/mouth/dragonfly_mouth.py rename to infinigen/assets/creatures/insects/parts/mouth/dragonfly_mouth.py diff --git a/worldgen/assets/insects/parts/tail/dragonfly_tail.py b/infinigen/assets/creatures/insects/parts/tail/dragonfly_tail.py similarity index 100% rename from worldgen/assets/insects/parts/tail/dragonfly_tail.py rename to infinigen/assets/creatures/insects/parts/tail/dragonfly_tail.py diff --git a/worldgen/assets/insects/parts/wing/dragonfly_wing.py b/infinigen/assets/creatures/insects/parts/wing/dragonfly_wing.py similarity index 100% rename from worldgen/assets/insects/parts/wing/dragonfly_wing.py rename to infinigen/assets/creatures/insects/parts/wing/dragonfly_wing.py diff --git a/worldgen/assets/insects/utils/geom_utils.py b/infinigen/assets/creatures/insects/utils/geom_utils.py similarity index 100% rename from worldgen/assets/insects/utils/geom_utils.py rename to infinigen/assets/creatures/insects/utils/geom_utils.py diff --git a/worldgen/assets/insects/utils/shader_utils.py b/infinigen/assets/creatures/insects/utils/shader_utils.py similarity index 100% rename from worldgen/assets/insects/utils/shader_utils.py rename to infinigen/assets/creatures/insects/utils/shader_utils.py diff --git a/worldgen/assets/jellyfish.py b/infinigen/assets/creatures/jellyfish.py similarity index 100% rename from worldgen/assets/jellyfish.py rename to infinigen/assets/creatures/jellyfish.py diff --git a/worldgen/assets/creatures/genomes/nurbs/body_bird_duck.npy b/infinigen/assets/creatures/nurbs_data/body_bird_duck.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_bird_duck.npy rename to infinigen/assets/creatures/nurbs_data/body_bird_duck.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_bird_gull.npy b/infinigen/assets/creatures/nurbs_data/body_bird_gull.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_bird_gull.npy rename to infinigen/assets/creatures/nurbs_data/body_bird_gull.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_bird_robin.npy b/infinigen/assets/creatures/nurbs_data/body_bird_robin.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_bird_robin.npy rename to infinigen/assets/creatures/nurbs_data/body_bird_robin.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_feline_cheetah.npy b/infinigen/assets/creatures/nurbs_data/body_feline_cheetah.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_feline_cheetah.npy rename to infinigen/assets/creatures/nurbs_data/body_feline_cheetah.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_feline_housecat.npy b/infinigen/assets/creatures/nurbs_data/body_feline_housecat.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_feline_housecat.npy rename to infinigen/assets/creatures/nurbs_data/body_feline_housecat.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_feline_tiger.npy b/infinigen/assets/creatures/nurbs_data/body_feline_tiger.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_feline_tiger.npy rename to infinigen/assets/creatures/nurbs_data/body_feline_tiger.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_feline_tiger_2.npy b/infinigen/assets/creatures/nurbs_data/body_feline_tiger_2.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_feline_tiger_2.npy rename to infinigen/assets/creatures/nurbs_data/body_feline_tiger_2.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_feline_wolf.npy b/infinigen/assets/creatures/nurbs_data/body_feline_wolf.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_feline_wolf.npy rename to infinigen/assets/creatures/nurbs_data/body_feline_wolf.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_fish_bluefish.npy b/infinigen/assets/creatures/nurbs_data/body_fish_bluefish.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_fish_bluefish.npy rename to infinigen/assets/creatures/nurbs_data/body_fish_bluefish.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_fish_crappie.npy b/infinigen/assets/creatures/nurbs_data/body_fish_crappie.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_fish_crappie.npy rename to infinigen/assets/creatures/nurbs_data/body_fish_crappie.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_fish_eel.npy b/infinigen/assets/creatures/nurbs_data/body_fish_eel.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_fish_eel.npy rename to infinigen/assets/creatures/nurbs_data/body_fish_eel.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_fish_pickerel.npy b/infinigen/assets/creatures/nurbs_data/body_fish_pickerel.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_fish_pickerel.npy rename to infinigen/assets/creatures/nurbs_data/body_fish_pickerel.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_fish_pufferfish.npy b/infinigen/assets/creatures/nurbs_data/body_fish_pufferfish.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_fish_pufferfish.npy rename to infinigen/assets/creatures/nurbs_data/body_fish_pufferfish.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_fish_spadefish.npy b/infinigen/assets/creatures/nurbs_data/body_fish_spadefish.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_fish_spadefish.npy rename to infinigen/assets/creatures/nurbs_data/body_fish_spadefish.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_herbivore_cow.npy b/infinigen/assets/creatures/nurbs_data/body_herbivore_cow.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_herbivore_cow.npy rename to infinigen/assets/creatures/nurbs_data/body_herbivore_cow.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_herbivore_giraffe.npy b/infinigen/assets/creatures/nurbs_data/body_herbivore_giraffe.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_herbivore_giraffe.npy rename to infinigen/assets/creatures/nurbs_data/body_herbivore_giraffe.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_herbivore_goat.npy b/infinigen/assets/creatures/nurbs_data/body_herbivore_goat.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_herbivore_goat.npy rename to infinigen/assets/creatures/nurbs_data/body_herbivore_goat.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_herbivore_llama.npy b/infinigen/assets/creatures/nurbs_data/body_herbivore_llama.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_herbivore_llama.npy rename to infinigen/assets/creatures/nurbs_data/body_herbivore_llama.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_insect_bee.npy b/infinigen/assets/creatures/nurbs_data/body_insect_bee.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_insect_bee.npy rename to infinigen/assets/creatures/nurbs_data/body_insect_bee.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_insect_beetle.npy b/infinigen/assets/creatures/nurbs_data/body_insect_beetle.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_insect_beetle.npy rename to infinigen/assets/creatures/nurbs_data/body_insect_beetle.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_insect_tarantula.npy b/infinigen/assets/creatures/nurbs_data/body_insect_tarantula.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_insect_tarantula.npy rename to infinigen/assets/creatures/nurbs_data/body_insect_tarantula.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/body_llama.npy b/infinigen/assets/creatures/nurbs_data/body_llama.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/body_llama.npy rename to infinigen/assets/creatures/nurbs_data/body_llama.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/head_carnivore_tiger.npy b/infinigen/assets/creatures/nurbs_data/head_carnivore_tiger.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/head_carnivore_tiger.npy rename to infinigen/assets/creatures/nurbs_data/head_carnivore_tiger.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/head_carnivore_wolf.npy b/infinigen/assets/creatures/nurbs_data/head_carnivore_wolf.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/head_carnivore_wolf.npy rename to infinigen/assets/creatures/nurbs_data/head_carnivore_wolf.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/head_herbivore_cow.npy b/infinigen/assets/creatures/nurbs_data/head_herbivore_cow.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/head_herbivore_cow.npy rename to infinigen/assets/creatures/nurbs_data/head_herbivore_cow.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/head_herbivore_giraffe.npy b/infinigen/assets/creatures/nurbs_data/head_herbivore_giraffe.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/head_herbivore_giraffe.npy rename to infinigen/assets/creatures/nurbs_data/head_herbivore_giraffe.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/head_herbivore_goat.npy b/infinigen/assets/creatures/nurbs_data/head_herbivore_goat.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/head_herbivore_goat.npy rename to infinigen/assets/creatures/nurbs_data/head_herbivore_goat.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/head_herbivore_llama.npy b/infinigen/assets/creatures/nurbs_data/head_herbivore_llama.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/head_herbivore_llama.npy rename to infinigen/assets/creatures/nurbs_data/head_herbivore_llama.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/head_insect_beetle.npy b/infinigen/assets/creatures/nurbs_data/head_insect_beetle.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/head_insect_beetle.npy rename to infinigen/assets/creatures/nurbs_data/head_insect_beetle.npy diff --git a/worldgen/assets/creatures/genomes/nurbs/head_insect_wasp.npy b/infinigen/assets/creatures/nurbs_data/head_insect_wasp.npy similarity index 100% rename from worldgen/assets/creatures/genomes/nurbs/head_insect_wasp.npy rename to infinigen/assets/creatures/nurbs_data/head_insect_wasp.npy diff --git a/worldgen/assets/creatures/parts/__init__.py b/infinigen/assets/creatures/parts/__init__.py similarity index 100% rename from worldgen/assets/creatures/parts/__init__.py rename to infinigen/assets/creatures/parts/__init__.py diff --git a/worldgen/assets/creatures/parts/beak.py b/infinigen/assets/creatures/parts/beak.py similarity index 100% rename from worldgen/assets/creatures/parts/beak.py rename to infinigen/assets/creatures/parts/beak.py diff --git a/worldgen/assets/creatures/parts/body.py b/infinigen/assets/creatures/parts/body.py similarity index 100% rename from worldgen/assets/creatures/parts/body.py rename to infinigen/assets/creatures/parts/body.py diff --git a/worldgen/assets/creatures/parts/chameleon.py b/infinigen/assets/creatures/parts/chameleon.py similarity index 100% rename from worldgen/assets/creatures/parts/chameleon.py rename to infinigen/assets/creatures/parts/chameleon.py diff --git a/worldgen/assets/creatures/geometry/__init__.py b/infinigen/assets/creatures/parts/crustacean/__init__.py similarity index 100% rename from worldgen/assets/creatures/geometry/__init__.py rename to infinigen/assets/creatures/parts/crustacean/__init__.py diff --git a/worldgen/assets/creatures/parts/crustacean/antenna.py b/infinigen/assets/creatures/parts/crustacean/antenna.py similarity index 100% rename from worldgen/assets/creatures/parts/crustacean/antenna.py rename to infinigen/assets/creatures/parts/crustacean/antenna.py diff --git a/worldgen/assets/creatures/parts/crustacean/body.py b/infinigen/assets/creatures/parts/crustacean/body.py similarity index 100% rename from worldgen/assets/creatures/parts/crustacean/body.py rename to infinigen/assets/creatures/parts/crustacean/body.py diff --git a/worldgen/assets/creatures/parts/crustacean/claw.py b/infinigen/assets/creatures/parts/crustacean/claw.py similarity index 100% rename from worldgen/assets/creatures/parts/crustacean/claw.py rename to infinigen/assets/creatures/parts/crustacean/claw.py diff --git a/worldgen/assets/creatures/parts/crustacean/eye.py b/infinigen/assets/creatures/parts/crustacean/eye.py similarity index 100% rename from worldgen/assets/creatures/parts/crustacean/eye.py rename to infinigen/assets/creatures/parts/crustacean/eye.py diff --git a/worldgen/assets/creatures/parts/crustacean/fin.py b/infinigen/assets/creatures/parts/crustacean/fin.py similarity index 100% rename from worldgen/assets/creatures/parts/crustacean/fin.py rename to infinigen/assets/creatures/parts/crustacean/fin.py diff --git a/worldgen/assets/creatures/parts/crustacean/leg.py b/infinigen/assets/creatures/parts/crustacean/leg.py similarity index 100% rename from worldgen/assets/creatures/parts/crustacean/leg.py rename to infinigen/assets/creatures/parts/crustacean/leg.py diff --git a/worldgen/assets/creatures/parts/crustacean/tail.py b/infinigen/assets/creatures/parts/crustacean/tail.py similarity index 100% rename from worldgen/assets/creatures/parts/crustacean/tail.py rename to infinigen/assets/creatures/parts/crustacean/tail.py diff --git a/worldgen/assets/creatures/parts/eye.py b/infinigen/assets/creatures/parts/eye.py similarity index 100% rename from worldgen/assets/creatures/parts/eye.py rename to infinigen/assets/creatures/parts/eye.py diff --git a/worldgen/assets/creatures/parts/eye_new.py b/infinigen/assets/creatures/parts/eye_new.py similarity index 100% rename from worldgen/assets/creatures/parts/eye_new.py rename to infinigen/assets/creatures/parts/eye_new.py diff --git a/worldgen/assets/creatures/parts/fin_old.py b/infinigen/assets/creatures/parts/fin_old.py similarity index 100% rename from worldgen/assets/creatures/parts/fin_old.py rename to infinigen/assets/creatures/parts/fin_old.py diff --git a/worldgen/assets/creatures/parts/foot.py b/infinigen/assets/creatures/parts/foot.py similarity index 100% rename from worldgen/assets/creatures/parts/foot.py rename to infinigen/assets/creatures/parts/foot.py diff --git a/worldgen/assets/creatures/parts/generic_nurbs.py b/infinigen/assets/creatures/parts/generic_nurbs.py similarity index 100% rename from worldgen/assets/creatures/parts/generic_nurbs.py rename to infinigen/assets/creatures/parts/generic_nurbs.py diff --git a/worldgen/assets/creatures/parts/head.py b/infinigen/assets/creatures/parts/head.py similarity index 100% rename from worldgen/assets/creatures/parts/head.py rename to infinigen/assets/creatures/parts/head.py diff --git a/worldgen/assets/creatures/parts/head_detail.py b/infinigen/assets/creatures/parts/head_detail.py similarity index 100% rename from worldgen/assets/creatures/parts/head_detail.py rename to infinigen/assets/creatures/parts/head_detail.py diff --git a/worldgen/assets/creatures/parts/hoof.py b/infinigen/assets/creatures/parts/hoof.py similarity index 100% rename from worldgen/assets/creatures/parts/hoof.py rename to infinigen/assets/creatures/parts/hoof.py diff --git a/worldgen/assets/creatures/parts/horn.py b/infinigen/assets/creatures/parts/horn.py similarity index 100% rename from worldgen/assets/creatures/parts/horn.py rename to infinigen/assets/creatures/parts/horn.py diff --git a/worldgen/assets/creatures/parts/leg.py b/infinigen/assets/creatures/parts/leg.py similarity index 100% rename from worldgen/assets/creatures/parts/leg.py rename to infinigen/assets/creatures/parts/leg.py diff --git a/worldgen/assets/creatures/parts/reptile_detail.py b/infinigen/assets/creatures/parts/reptile_detail.py similarity index 100% rename from worldgen/assets/creatures/parts/reptile_detail.py rename to infinigen/assets/creatures/parts/reptile_detail.py diff --git a/worldgen/assets/creatures/parts/ridged_fin.py b/infinigen/assets/creatures/parts/ridged_fin.py similarity index 100% rename from worldgen/assets/creatures/parts/ridged_fin.py rename to infinigen/assets/creatures/parts/ridged_fin.py diff --git a/worldgen/assets/creatures/parts/tail.py b/infinigen/assets/creatures/parts/tail.py similarity index 100% rename from worldgen/assets/creatures/parts/tail.py rename to infinigen/assets/creatures/parts/tail.py diff --git a/worldgen/assets/creatures/parts/utils/draw.py b/infinigen/assets/creatures/parts/utils/draw.py similarity index 100% rename from worldgen/assets/creatures/parts/utils/draw.py rename to infinigen/assets/creatures/parts/utils/draw.py diff --git a/worldgen/assets/creatures/parts/wings.py b/infinigen/assets/creatures/parts/wings.py similarity index 100% rename from worldgen/assets/creatures/parts/wings.py rename to infinigen/assets/creatures/parts/wings.py diff --git a/worldgen/assets/creatures/genomes/reptile.py b/infinigen/assets/creatures/reptile.py similarity index 100% rename from worldgen/assets/creatures/genomes/reptile.py rename to infinigen/assets/creatures/reptile.py diff --git a/worldgen/assets/creatures/parts/crustacean/__init__.py b/infinigen/assets/creatures/util/__init__.py similarity index 100% rename from worldgen/assets/creatures/parts/crustacean/__init__.py rename to infinigen/assets/creatures/util/__init__.py diff --git a/worldgen/assets/creatures/animation/curve_slither.py b/infinigen/assets/creatures/util/animation/curve_slither.py similarity index 100% rename from worldgen/assets/creatures/animation/curve_slither.py rename to infinigen/assets/creatures/util/animation/curve_slither.py diff --git a/worldgen/assets/creatures/animation/driver_repeated.py b/infinigen/assets/creatures/util/animation/driver_repeated.py similarity index 100% rename from worldgen/assets/creatures/animation/driver_repeated.py rename to infinigen/assets/creatures/util/animation/driver_repeated.py diff --git a/worldgen/assets/creatures/animation/driver_wiggle.py b/infinigen/assets/creatures/util/animation/driver_wiggle.py similarity index 100% rename from worldgen/assets/creatures/animation/driver_wiggle.py rename to infinigen/assets/creatures/util/animation/driver_wiggle.py diff --git a/worldgen/assets/creatures/animation/idle.py b/infinigen/assets/creatures/util/animation/idle.py similarity index 100% rename from worldgen/assets/creatures/animation/idle.py rename to infinigen/assets/creatures/util/animation/idle.py diff --git a/worldgen/assets/creatures/animation/run_cycle.py b/infinigen/assets/creatures/util/animation/run_cycle.py similarity index 100% rename from worldgen/assets/creatures/animation/run_cycle.py rename to infinigen/assets/creatures/util/animation/run_cycle.py diff --git a/worldgen/assets/creatures/boid_swarm.py b/infinigen/assets/creatures/util/boid_swarm.py similarity index 100% rename from worldgen/assets/creatures/boid_swarm.py rename to infinigen/assets/creatures/util/boid_swarm.py diff --git a/worldgen/assets/creatures/cloth_sim.py b/infinigen/assets/creatures/util/cloth_sim.py similarity index 100% rename from worldgen/assets/creatures/cloth_sim.py rename to infinigen/assets/creatures/util/cloth_sim.py diff --git a/worldgen/assets/creatures/creature.py b/infinigen/assets/creatures/util/creature.py similarity index 100% rename from worldgen/assets/creatures/creature.py rename to infinigen/assets/creatures/util/creature.py diff --git a/worldgen/assets/creatures/util/creature_parser.py b/infinigen/assets/creatures/util/creature_parser.py similarity index 100% rename from worldgen/assets/creatures/util/creature_parser.py rename to infinigen/assets/creatures/util/creature_parser.py diff --git a/worldgen/assets/creatures/creature_util.py b/infinigen/assets/creatures/util/creature_util.py similarity index 100% rename from worldgen/assets/creatures/creature_util.py rename to infinigen/assets/creatures/util/creature_util.py diff --git a/worldgen/assets/creatures/genome.py b/infinigen/assets/creatures/util/genome.py similarity index 100% rename from worldgen/assets/creatures/genome.py rename to infinigen/assets/creatures/util/genome.py diff --git a/worldgen/assets/creatures/util/__init__.py b/infinigen/assets/creatures/util/geometry/__init__.py similarity index 100% rename from worldgen/assets/creatures/util/__init__.py rename to infinigen/assets/creatures/util/geometry/__init__.py diff --git a/worldgen/assets/creatures/geometry/blending.py b/infinigen/assets/creatures/util/geometry/blending.py similarity index 100% rename from worldgen/assets/creatures/geometry/blending.py rename to infinigen/assets/creatures/util/geometry/blending.py diff --git a/worldgen/assets/creatures/geometry/cpp_utils/.gitignore b/infinigen/assets/creatures/util/geometry/cpp_utils/.gitignore similarity index 100% rename from worldgen/assets/creatures/geometry/cpp_utils/.gitignore rename to infinigen/assets/creatures/util/geometry/cpp_utils/.gitignore diff --git a/worldgen/assets/creatures/geometry/cpp_utils/bnurbs.pyx b/infinigen/assets/creatures/util/geometry/cpp_utils/bnurbs.pyx similarity index 100% rename from worldgen/assets/creatures/geometry/cpp_utils/bnurbs.pyx rename to infinigen/assets/creatures/util/geometry/cpp_utils/bnurbs.pyx diff --git a/worldgen/assets/creatures/geometry/cpp_utils/setup_linux.py b/infinigen/assets/creatures/util/geometry/cpp_utils/setup_linux.py similarity index 100% rename from worldgen/assets/creatures/geometry/cpp_utils/setup_linux.py rename to infinigen/assets/creatures/util/geometry/cpp_utils/setup_linux.py diff --git a/worldgen/assets/creatures/geometry/cpp_utils/setup_macos.py b/infinigen/assets/creatures/util/geometry/cpp_utils/setup_macos.py similarity index 100% rename from worldgen/assets/creatures/geometry/cpp_utils/setup_macos.py rename to infinigen/assets/creatures/util/geometry/cpp_utils/setup_macos.py diff --git a/worldgen/assets/creatures/geometry/cpp_utils/setup_macos_as.py b/infinigen/assets/creatures/util/geometry/cpp_utils/setup_macos_as.py similarity index 100% rename from worldgen/assets/creatures/geometry/cpp_utils/setup_macos_as.py rename to infinigen/assets/creatures/util/geometry/cpp_utils/setup_macos_as.py diff --git a/worldgen/assets/creatures/geometry/curve.py b/infinigen/assets/creatures/util/geometry/curve.py similarity index 100% rename from worldgen/assets/creatures/geometry/curve.py rename to infinigen/assets/creatures/util/geometry/curve.py diff --git a/worldgen/assets/creatures/geometry/lofting.py b/infinigen/assets/creatures/util/geometry/lofting.py similarity index 100% rename from worldgen/assets/creatures/geometry/lofting.py rename to infinigen/assets/creatures/util/geometry/lofting.py diff --git a/worldgen/assets/creatures/geometry/metaballs.py b/infinigen/assets/creatures/util/geometry/metaballs.py similarity index 100% rename from worldgen/assets/creatures/geometry/metaballs.py rename to infinigen/assets/creatures/util/geometry/metaballs.py diff --git a/worldgen/assets/creatures/geometry/nurbs.py b/infinigen/assets/creatures/util/geometry/nurbs.py similarity index 100% rename from worldgen/assets/creatures/geometry/nurbs.py rename to infinigen/assets/creatures/util/geometry/nurbs.py diff --git a/worldgen/assets/creatures/geometry/skin_ops.py b/infinigen/assets/creatures/util/geometry/skin_ops.py similarity index 100% rename from worldgen/assets/creatures/geometry/skin_ops.py rename to infinigen/assets/creatures/util/geometry/skin_ops.py diff --git a/worldgen/assets/creatures/util/geonode_part.py b/infinigen/assets/creatures/util/geonode_part.py similarity index 100% rename from worldgen/assets/creatures/util/geonode_part.py rename to infinigen/assets/creatures/util/geonode_part.py diff --git a/worldgen/assets/creatures/hair.py b/infinigen/assets/creatures/util/hair.py similarity index 100% rename from worldgen/assets/creatures/hair.py rename to infinigen/assets/creatures/util/hair.py diff --git a/worldgen/assets/creatures/util/join_smoothing.py b/infinigen/assets/creatures/util/join_smoothing.py similarity index 100% rename from worldgen/assets/creatures/util/join_smoothing.py rename to infinigen/assets/creatures/util/join_smoothing.py diff --git a/worldgen/assets/creatures/generate.py b/infinigen/assets/creatures/util/joining.py similarity index 100% rename from worldgen/assets/creatures/generate.py rename to infinigen/assets/creatures/util/joining.py diff --git a/worldgen/assets/creatures/nodegroups/__init__.py b/infinigen/assets/creatures/util/nodegroups/__init__.py similarity index 100% rename from worldgen/assets/creatures/nodegroups/__init__.py rename to infinigen/assets/creatures/util/nodegroups/__init__.py diff --git a/worldgen/assets/creatures/nodegroups/attach.py b/infinigen/assets/creatures/util/nodegroups/attach.py similarity index 100% rename from worldgen/assets/creatures/nodegroups/attach.py rename to infinigen/assets/creatures/util/nodegroups/attach.py diff --git a/worldgen/assets/creatures/nodegroups/curve.py b/infinigen/assets/creatures/util/nodegroups/curve.py similarity index 100% rename from worldgen/assets/creatures/nodegroups/curve.py rename to infinigen/assets/creatures/util/nodegroups/curve.py diff --git a/worldgen/assets/creatures/nodegroups/geometry.py b/infinigen/assets/creatures/util/nodegroups/geometry.py similarity index 100% rename from worldgen/assets/creatures/nodegroups/geometry.py rename to infinigen/assets/creatures/util/nodegroups/geometry.py diff --git a/worldgen/assets/creatures/nodegroups/hair.py b/infinigen/assets/creatures/util/nodegroups/hair.py similarity index 100% rename from worldgen/assets/creatures/nodegroups/hair.py rename to infinigen/assets/creatures/util/nodegroups/hair.py diff --git a/worldgen/assets/creatures/nodegroups/math.py b/infinigen/assets/creatures/util/nodegroups/math.py similarity index 100% rename from worldgen/assets/creatures/nodegroups/math.py rename to infinigen/assets/creatures/util/nodegroups/math.py diff --git a/worldgen/assets/creatures/nodegroups/sculpt_v1.py b/infinigen/assets/creatures/util/nodegroups/sculpt_v1.py similarity index 100% rename from worldgen/assets/creatures/nodegroups/sculpt_v1.py rename to infinigen/assets/creatures/util/nodegroups/sculpt_v1.py diff --git a/worldgen/assets/creatures/nodegroups/shader.py b/infinigen/assets/creatures/util/nodegroups/shader.py similarity index 100% rename from worldgen/assets/creatures/nodegroups/shader.py rename to infinigen/assets/creatures/util/nodegroups/shader.py diff --git a/worldgen/assets/creatures/util/part_util.py b/infinigen/assets/creatures/util/part_util.py similarity index 100% rename from worldgen/assets/creatures/util/part_util.py rename to infinigen/assets/creatures/util/part_util.py diff --git a/worldgen/assets/creatures/rigging.py b/infinigen/assets/creatures/util/rigging.py similarity index 100% rename from worldgen/assets/creatures/rigging.py rename to infinigen/assets/creatures/util/rigging.py diff --git a/worldgen/assets/creatures/util/tree.py b/infinigen/assets/creatures/util/tree.py similarity index 100% rename from worldgen/assets/creatures/util/tree.py rename to infinigen/assets/creatures/util/tree.py diff --git a/infinigen/assets/debris/__init__.py b/infinigen/assets/debris/__init__.py new file mode 100644 index 000000000..48c459b8d --- /dev/null +++ b/infinigen/assets/debris/__init__.py @@ -0,0 +1,3 @@ +from .lichen import LichenFactory +from .moss import MossFactory +from .pine_needle import PineNeedleFactory \ No newline at end of file diff --git a/worldgen/surfaces/scatters/lichen.py b/infinigen/assets/debris/lichen.py similarity index 70% rename from worldgen/surfaces/scatters/lichen.py rename to infinigen/assets/debris/lichen.py index 20ba70503..890a05df0 100644 --- a/worldgen/surfaces/scatters/lichen.py +++ b/infinigen/assets/debris/lichen.py @@ -11,17 +11,15 @@ import numpy as np from numpy.random import uniform, normal as N -from assets.utils.decorate import assign_material -from nodes.node_wrangler import Nodes, NodeWrangler -from placement.factory import AssetFactory, make_asset_collection -from placement.instance_scatter import scatter_instances -from surfaces import surface -from placement.factory import AssetFactory -from infinigen_gpl.extras.diff_growth import build_diff_growth -from assets.utils.object import data2mesh -from assets.utils.mesh import polygon_angles -from util import blender as butil -from assets.utils.tag import tag_object, tag_nodegroup +from infinigen.assets.utils.decorate import assign_material +from infinigen.core.nodes.node_wrangler import Nodes, NodeWrangler +from infinigen.core import surface +from infinigen.core.placement.factory import AssetFactory +from infinigen.infinigen_gpl.extras.diff_growth import build_diff_growth +from infinigen.assets.utils.object import data2mesh +from infinigen.assets.utils.mesh import polygon_angles +from infinigen.core.util import blender as butil +from infinigen.assets.utils.tag import tag_object, tag_nodegroup class LichenFactory(AssetFactory): @@ -97,33 +95,4 @@ def create_asset(self, **kwargs): (self.base_hue + uniform(-.04, .04)) % 1)) tag_object(obj, 'lichen') - return obj - - -class Lichen: - - def __init__(self): - self.fac = LichenFactory(np.random.randint(1e5)) - self.col = make_asset_collection(self.fac, name='lichen', n=5) - - def apply(self, obj, selection=None): - - scatter_obj = scatter_instances( - base_obj=obj, collection=self.col, - density=5e3, min_spacing=.08, - scale=1, scale_rand=N(0.5, 0.07), - selection=selection - ) - return scatter_obj - - -def apply(obj, selection=None): - fac = LichenFactory(np.random.randint(1e5)) - col = make_asset_collection(fac, name='lichen', n=5) - scatter_obj = scatter_instances( - base_obj=obj, collection=col, - density=5e3, min_spacing=.08, - scale=1, scale_rand=N(0.5, 0.07), - selection=selection - ) - return scatter_obj + return obj \ No newline at end of file diff --git a/worldgen/surfaces/scatters/moss.py b/infinigen/assets/debris/moss.py similarity index 63% rename from worldgen/surfaces/scatters/moss.py rename to infinigen/assets/debris/moss.py index 5e3c21f98..63df60737 100644 --- a/worldgen/surfaces/scatters/moss.py +++ b/infinigen/assets/debris/moss.py @@ -1,26 +1,17 @@ -# Copyright (c) Princeton University. -# This source code is licensed under the BSD 3-Clause license found in the LICENSE file in the root directory of this source tree. - -# Authors: Lingjie Mei - - import math import colorsys -import numpy as np from numpy.random import uniform as U -from placement.instance_scatter import scatter_instances -from assets.utils.object import new_cube -from assets.utils.misc import build_color_ramp -from assets.utils.decorate import assign_material -from placement.factory import AssetFactory, make_asset_collection -from nodes.node_wrangler import Nodes, NodeWrangler -from nodes import node_utils -from surfaces import surface -from assets.utils.tag import tag_object, tag_nodegroup -from placement.instance_scatter import scatter_instances +from infinigen.assets.utils.object import new_cube +from infinigen.assets.utils.misc import build_color_ramp +from infinigen.assets.utils.decorate import assign_material +from infinigen.assets.utils.tag import tag_object + +from infinigen.core.placement.factory import AssetFactory +from infinigen.core.nodes.node_wrangler import Nodes, NodeWrangler +from infinigen.core import surface class MossFactory(AssetFactory): @@ -91,29 +82,4 @@ def geo_moss_instance(nw: NodeWrangler, face_size): circle = nw.new_node(Nodes.CurveCircle, input_kwargs={'Resolution': 4, 'Radius': radius}).outputs[ "Curve"] mesh = nw.curve2mesh(bezier, circle) - nw.new_node(Nodes.GroupOutput, input_kwargs={'Geometry': mesh}) - - -class MossCover: - - def __init__(self): - self.col = make_asset_collection(MossFactory(np.random.randint(1e5)), name='moss', n=3) - base_hue = U(.24, .28) - for o in self.col.objects: - assign_material(o, surface.shaderfunc_to_material(MossFactory.shader_moss, - (base_hue + U(-.02, .02)) % 1)) - - def apply(self, obj, selection=None): - - def instance_index(nw: NodeWrangler, n): - return nw.math('MODULO', - nw.new_node(Nodes.FloatToInt, [nw.scalar_multiply(nw.musgrave(10), 2 * n)]), n) - - scatter_obj = scatter_instances( - base_obj=obj, collection=self.col, - density=2e4, min_spacing=.005, - scale=1, scale_rand=U(0.3, 0.7), - selection=selection, - instance_index=instance_index) - - return scatter_obj + nw.new_node(Nodes.GroupOutput, input_kwargs={'Geometry': mesh}) \ No newline at end of file diff --git a/worldgen/surfaces/scatters/pine_needle.py b/infinigen/assets/debris/pine_needle.py similarity index 68% rename from worldgen/surfaces/scatters/pine_needle.py rename to infinigen/assets/debris/pine_needle.py index b7dbf1245..a45772717 100644 --- a/worldgen/surfaces/scatters/pine_needle.py +++ b/infinigen/assets/debris/pine_needle.py @@ -1,26 +1,19 @@ # Copyright (c) Princeton University. # This source code is licensed under the BSD 3-Clause license found in the LICENSE file in the root directory of this source tree. -# Authors: Lingjie Mei +# Authors: Alexander Raistrick, Lingjie Mei +from numpy.random import normal as N -import colorsys +from infinigen.core.nodes.node_wrangler import Nodes, NodeWrangler +from infinigen.core.nodes import node_utils +from infinigen.core.nodes.color import color_category -import bpy -import mathutils -import numpy as np -from numpy.random import uniform as U, normal as N, randint +from infinigen.core import surface +from infinigen.core.placement.factory import AssetFactory -from nodes.node_wrangler import Nodes, NodeWrangler -from nodes import node_utils -from nodes.color import color_category - -from surfaces import surface -from placement.factory import AssetFactory, make_asset_collection -from placement.instance_scatter import scatter_instances - -from util import blender as butil -from assets.utils.tag import tag_object, tag_nodegroup +from infinigen.core.util import blender as butil +from infinigen.assets.utils.tag import tag_object def shader_material(nw: NodeWrangler): # Code generated using version 2.6.3 of the node_transpiler @@ -86,22 +79,4 @@ def create_asset(self, **_): return obj def finalize_assets(self, objs): - surface.add_material(objs, shader_material) - -def apply(obj, scale=1, density=2e3, n=3, selection=None): - n_species = np.random.randint(2, 3) - factories = [PineNeedleFactory(np.random.randint(1e5)) for i in range(n_species)] - pine_needle = make_asset_collection(factories, - weights=U(0.5, 1, len(factories)), n=n, - verbose=True) - - d = np.deg2rad(U(5, 15)) - scatter_obj = scatter_instances( - base_obj=obj, collection=pine_needle, - vol_density=U(0.01, 0.03), rotation_offset=lambda nw: nw.uniform((-d,)*3, (d,)*3), - ground_offset=lambda nw: nw.uniform(0, 0.015), - scale=U(2, 3), scale_rand=U(0.4, 0.8), scale_rand_axi=U(0.3, 0.7), - selection=selection, taper_density=True - ) - - return scatter_obj, pine_needle + surface.add_material(objs, shader_material) \ No newline at end of file diff --git a/worldgen/assets/deformed_trees/__init__.py b/infinigen/assets/deformed_trees/__init__.py similarity index 100% rename from worldgen/assets/deformed_trees/__init__.py rename to infinigen/assets/deformed_trees/__init__.py diff --git a/worldgen/assets/deformed_trees/base.py b/infinigen/assets/deformed_trees/base.py similarity index 100% rename from worldgen/assets/deformed_trees/base.py rename to infinigen/assets/deformed_trees/base.py diff --git a/worldgen/assets/deformed_trees/fallen.py b/infinigen/assets/deformed_trees/fallen.py similarity index 100% rename from worldgen/assets/deformed_trees/fallen.py rename to infinigen/assets/deformed_trees/fallen.py diff --git a/worldgen/assets/deformed_trees/generate.py b/infinigen/assets/deformed_trees/generate.py similarity index 100% rename from worldgen/assets/deformed_trees/generate.py rename to infinigen/assets/deformed_trees/generate.py diff --git a/worldgen/assets/deformed_trees/hollow.py b/infinigen/assets/deformed_trees/hollow.py similarity index 100% rename from worldgen/assets/deformed_trees/hollow.py rename to infinigen/assets/deformed_trees/hollow.py diff --git a/worldgen/assets/deformed_trees/rotten.py b/infinigen/assets/deformed_trees/rotten.py similarity index 100% rename from worldgen/assets/deformed_trees/rotten.py rename to infinigen/assets/deformed_trees/rotten.py diff --git a/worldgen/assets/deformed_trees/truncated.py b/infinigen/assets/deformed_trees/truncated.py similarity index 100% rename from worldgen/assets/deformed_trees/truncated.py rename to infinigen/assets/deformed_trees/truncated.py diff --git a/worldgen/fluid/__init__.py b/infinigen/assets/fluid/__init__.py similarity index 100% rename from worldgen/fluid/__init__.py rename to infinigen/assets/fluid/__init__.py diff --git a/worldgen/fluid/asset_cache.py b/infinigen/assets/fluid/asset_cache.py similarity index 100% rename from worldgen/fluid/asset_cache.py rename to infinigen/assets/fluid/asset_cache.py diff --git a/worldgen/fluid/bounding_box.py b/infinigen/assets/fluid/bounding_box.py similarity index 100% rename from worldgen/fluid/bounding_box.py rename to infinigen/assets/fluid/bounding_box.py diff --git a/worldgen/fluid/cached_factory_wrappers.py b/infinigen/assets/fluid/cached_factory_wrappers.py similarity index 100% rename from worldgen/fluid/cached_factory_wrappers.py rename to infinigen/assets/fluid/cached_factory_wrappers.py diff --git a/worldgen/fluid/duplication_geomod.py b/infinigen/assets/fluid/duplication_geomod.py similarity index 100% rename from worldgen/fluid/duplication_geomod.py rename to infinigen/assets/fluid/duplication_geomod.py diff --git a/worldgen/fluid/flip_fluid.py b/infinigen/assets/fluid/flip_fluid.py similarity index 100% rename from worldgen/fluid/flip_fluid.py rename to infinigen/assets/fluid/flip_fluid.py diff --git a/worldgen/fluid/flip_init.py b/infinigen/assets/fluid/flip_init.py similarity index 100% rename from worldgen/fluid/flip_init.py rename to infinigen/assets/fluid/flip_init.py diff --git a/worldgen/fluid/fluid.py b/infinigen/assets/fluid/fluid.py similarity index 100% rename from worldgen/fluid/fluid.py rename to infinigen/assets/fluid/fluid.py diff --git a/worldgen/fluid/fluid_scenecomp_additions.py b/infinigen/assets/fluid/fluid_scenecomp_additions.py similarity index 100% rename from worldgen/fluid/fluid_scenecomp_additions.py rename to infinigen/assets/fluid/fluid_scenecomp_additions.py diff --git a/worldgen/fluid/generate.py b/infinigen/assets/fluid/generate.py similarity index 100% rename from worldgen/fluid/generate.py rename to infinigen/assets/fluid/generate.py diff --git a/worldgen/fluid/liquid_particle_material.py b/infinigen/assets/fluid/liquid_particle_material.py similarity index 100% rename from worldgen/fluid/liquid_particle_material.py rename to infinigen/assets/fluid/liquid_particle_material.py diff --git a/worldgen/fluid/run_asset_cache.py b/infinigen/assets/fluid/run_asset_cache.py similarity index 100% rename from worldgen/fluid/run_asset_cache.py rename to infinigen/assets/fluid/run_asset_cache.py diff --git a/worldgen/fluid/run_tests.py b/infinigen/assets/fluid/run_tests.py similarity index 100% rename from worldgen/fluid/run_tests.py rename to infinigen/assets/fluid/run_tests.py diff --git a/worldgen/fluid/unit_tests.py b/infinigen/assets/fluid/unit_tests.py similarity index 100% rename from worldgen/fluid/unit_tests.py rename to infinigen/assets/fluid/unit_tests.py diff --git a/worldgen/assets/fruits/__init__.py b/infinigen/assets/fruits/__init__.py similarity index 100% rename from worldgen/assets/fruits/__init__.py rename to infinigen/assets/fruits/__init__.py diff --git a/worldgen/assets/fruits/apple.py b/infinigen/assets/fruits/apple.py similarity index 100% rename from worldgen/assets/fruits/apple.py rename to infinigen/assets/fruits/apple.py diff --git a/worldgen/assets/fruits/blackberry.py b/infinigen/assets/fruits/blackberry.py similarity index 100% rename from worldgen/assets/fruits/blackberry.py rename to infinigen/assets/fruits/blackberry.py diff --git a/worldgen/assets/fruits/coconutgreen.py b/infinigen/assets/fruits/coconutgreen.py similarity index 100% rename from worldgen/assets/fruits/coconutgreen.py rename to infinigen/assets/fruits/coconutgreen.py diff --git a/worldgen/assets/fruits/coconuthairy.py b/infinigen/assets/fruits/coconuthairy.py similarity index 100% rename from worldgen/assets/fruits/coconuthairy.py rename to infinigen/assets/fruits/coconuthairy.py diff --git a/worldgen/assets/fruits/compositional_fruit.py b/infinigen/assets/fruits/compositional_fruit.py similarity index 100% rename from worldgen/assets/fruits/compositional_fruit.py rename to infinigen/assets/fruits/compositional_fruit.py diff --git a/worldgen/assets/fruits/cross_section_lib.py b/infinigen/assets/fruits/cross_section_lib.py similarity index 100% rename from worldgen/assets/fruits/cross_section_lib.py rename to infinigen/assets/fruits/cross_section_lib.py diff --git a/worldgen/assets/fruits/durian.py b/infinigen/assets/fruits/durian.py similarity index 100% rename from worldgen/assets/fruits/durian.py rename to infinigen/assets/fruits/durian.py diff --git a/worldgen/assets/fruits/fruit_utils.py b/infinigen/assets/fruits/fruit_utils.py similarity index 100% rename from worldgen/assets/fruits/fruit_utils.py rename to infinigen/assets/fruits/fruit_utils.py diff --git a/worldgen/assets/fruits/general_fruit.py b/infinigen/assets/fruits/general_fruit.py similarity index 100% rename from worldgen/assets/fruits/general_fruit.py rename to infinigen/assets/fruits/general_fruit.py diff --git a/worldgen/assets/fruits/pineapple.py b/infinigen/assets/fruits/pineapple.py similarity index 100% rename from worldgen/assets/fruits/pineapple.py rename to infinigen/assets/fruits/pineapple.py diff --git a/worldgen/assets/fruits/seed_lib.py b/infinigen/assets/fruits/seed_lib.py similarity index 100% rename from worldgen/assets/fruits/seed_lib.py rename to infinigen/assets/fruits/seed_lib.py diff --git a/worldgen/assets/fruits/starfruit.py b/infinigen/assets/fruits/starfruit.py similarity index 100% rename from worldgen/assets/fruits/starfruit.py rename to infinigen/assets/fruits/starfruit.py diff --git a/worldgen/assets/fruits/stem_lib.py b/infinigen/assets/fruits/stem_lib.py similarity index 100% rename from worldgen/assets/fruits/stem_lib.py rename to infinigen/assets/fruits/stem_lib.py diff --git a/worldgen/assets/fruits/strawberry.py b/infinigen/assets/fruits/strawberry.py similarity index 100% rename from worldgen/assets/fruits/strawberry.py rename to infinigen/assets/fruits/strawberry.py diff --git a/worldgen/assets/fruits/surfaces/apple_surface.py b/infinigen/assets/fruits/surfaces/apple_surface.py similarity index 100% rename from worldgen/assets/fruits/surfaces/apple_surface.py rename to infinigen/assets/fruits/surfaces/apple_surface.py diff --git a/worldgen/assets/fruits/surfaces/blackberry_surface.py b/infinigen/assets/fruits/surfaces/blackberry_surface.py similarity index 100% rename from worldgen/assets/fruits/surfaces/blackberry_surface.py rename to infinigen/assets/fruits/surfaces/blackberry_surface.py diff --git a/worldgen/assets/fruits/surfaces/coconutgreen_surface.py b/infinigen/assets/fruits/surfaces/coconutgreen_surface.py similarity index 100% rename from worldgen/assets/fruits/surfaces/coconutgreen_surface.py rename to infinigen/assets/fruits/surfaces/coconutgreen_surface.py diff --git a/worldgen/assets/fruits/surfaces/coconuthairy_surface.py b/infinigen/assets/fruits/surfaces/coconuthairy_surface.py similarity index 100% rename from worldgen/assets/fruits/surfaces/coconuthairy_surface.py rename to infinigen/assets/fruits/surfaces/coconuthairy_surface.py diff --git a/worldgen/assets/fruits/surfaces/durian_surface.py b/infinigen/assets/fruits/surfaces/durian_surface.py similarity index 100% rename from worldgen/assets/fruits/surfaces/durian_surface.py rename to infinigen/assets/fruits/surfaces/durian_surface.py diff --git a/worldgen/assets/fruits/surfaces/pineapple_surface.py b/infinigen/assets/fruits/surfaces/pineapple_surface.py similarity index 100% rename from worldgen/assets/fruits/surfaces/pineapple_surface.py rename to infinigen/assets/fruits/surfaces/pineapple_surface.py diff --git a/worldgen/assets/fruits/surfaces/starfruit_surface.py b/infinigen/assets/fruits/surfaces/starfruit_surface.py similarity index 100% rename from worldgen/assets/fruits/surfaces/starfruit_surface.py rename to infinigen/assets/fruits/surfaces/starfruit_surface.py diff --git a/worldgen/assets/fruits/surfaces/strawberry_surface.py b/infinigen/assets/fruits/surfaces/strawberry_surface.py similarity index 100% rename from worldgen/assets/fruits/surfaces/strawberry_surface.py rename to infinigen/assets/fruits/surfaces/strawberry_surface.py diff --git a/worldgen/assets/fruits/surfaces/surface_utils.py b/infinigen/assets/fruits/surfaces/surface_utils.py similarity index 100% rename from worldgen/assets/fruits/surfaces/surface_utils.py rename to infinigen/assets/fruits/surfaces/surface_utils.py diff --git a/worldgen/assets/grassland/__init__.py b/infinigen/assets/grassland/__init__.py similarity index 100% rename from worldgen/assets/grassland/__init__.py rename to infinigen/assets/grassland/__init__.py diff --git a/worldgen/assets/grassland/dandelion.py b/infinigen/assets/grassland/dandelion.py similarity index 100% rename from worldgen/assets/grassland/dandelion.py rename to infinigen/assets/grassland/dandelion.py diff --git a/worldgen/assets/flower.py b/infinigen/assets/grassland/flower.py similarity index 100% rename from worldgen/assets/flower.py rename to infinigen/assets/grassland/flower.py diff --git a/worldgen/assets/grassland/flowerplant.py b/infinigen/assets/grassland/flowerplant.py similarity index 99% rename from worldgen/assets/grassland/flowerplant.py rename to infinigen/assets/grassland/flowerplant.py index 0099a522b..3a36a9ebc 100644 --- a/worldgen/assets/grassland/flowerplant.py +++ b/infinigen/assets/grassland/flowerplant.py @@ -7,7 +7,7 @@ import bpy import mathutils from numpy.random import uniform, normal, randint -from assets.flower import FlowerFactory +from infinigen.assets.grassland.flower import FlowerFactory from nodes.node_wrangler import Nodes, NodeWrangler from nodes import node_utils from nodes.color import color_category @@ -15,7 +15,7 @@ from surfaces import surface from surfaces.templates import simple_greenery from assets.small_plants import leaf_general as Leaf -from assets import flower as Flower +from infinigen.assets.grassland import flower as Flower from placement.factory import AssetFactory from util import blender as butil from assets.utils.tag import tag_object, tag_nodegroup diff --git a/worldgen/assets/grassland/grass_tuft.py b/infinigen/assets/grassland/grass_tuft.py similarity index 100% rename from worldgen/assets/grassland/grass_tuft.py rename to infinigen/assets/grassland/grass_tuft.py diff --git a/worldgen/lighting/__init__.py b/infinigen/assets/leaves/__init__.py similarity index 100% rename from worldgen/lighting/__init__.py rename to infinigen/assets/leaves/__init__.py diff --git a/worldgen/assets/leaves/leaf.py b/infinigen/assets/leaves/leaf.py similarity index 100% rename from worldgen/assets/leaves/leaf.py rename to infinigen/assets/leaves/leaf.py diff --git a/worldgen/assets/leaves/leaf_broadleaf.py b/infinigen/assets/leaves/leaf_broadleaf.py similarity index 100% rename from worldgen/assets/leaves/leaf_broadleaf.py rename to infinigen/assets/leaves/leaf_broadleaf.py diff --git a/worldgen/assets/leaves/leaf_ginko.py b/infinigen/assets/leaves/leaf_ginko.py similarity index 100% rename from worldgen/assets/leaves/leaf_ginko.py rename to infinigen/assets/leaves/leaf_ginko.py diff --git a/worldgen/assets/leaves/leaf_maple.py b/infinigen/assets/leaves/leaf_maple.py similarity index 100% rename from worldgen/assets/leaves/leaf_maple.py rename to infinigen/assets/leaves/leaf_maple.py diff --git a/worldgen/assets/leaves/leaf_pine.py b/infinigen/assets/leaves/leaf_pine.py similarity index 100% rename from worldgen/assets/leaves/leaf_pine.py rename to infinigen/assets/leaves/leaf_pine.py diff --git a/worldgen/assets/leaves/leaf_v2.py b/infinigen/assets/leaves/leaf_v2.py similarity index 100% rename from worldgen/assets/leaves/leaf_v2.py rename to infinigen/assets/leaves/leaf_v2.py diff --git a/worldgen/assets/leaves/leaf_wrapped.py b/infinigen/assets/leaves/leaf_wrapped.py similarity index 100% rename from worldgen/assets/leaves/leaf_wrapped.py rename to infinigen/assets/leaves/leaf_wrapped.py diff --git a/worldgen/nodes/__init__.py b/infinigen/assets/lighting/__init__.py similarity index 100% rename from worldgen/nodes/__init__.py rename to infinigen/assets/lighting/__init__.py diff --git a/worldgen/assets/caustics_lamp.py b/infinigen/assets/lighting/caustics_lamp.py similarity index 100% rename from worldgen/assets/caustics_lamp.py rename to infinigen/assets/lighting/caustics_lamp.py diff --git a/worldgen/assets/glowing_rocks.py b/infinigen/assets/lighting/glowing_rocks.py similarity index 100% rename from worldgen/assets/glowing_rocks.py rename to infinigen/assets/lighting/glowing_rocks.py diff --git a/worldgen/lighting/lighting.py b/infinigen/assets/lighting/lighting.py similarity index 100% rename from worldgen/lighting/lighting.py rename to infinigen/assets/lighting/lighting.py diff --git a/worldgen/assets/monocot/__init__.py b/infinigen/assets/monocot/__init__.py similarity index 100% rename from worldgen/assets/monocot/__init__.py rename to infinigen/assets/monocot/__init__.py diff --git a/worldgen/assets/monocot/agave.py b/infinigen/assets/monocot/agave.py similarity index 100% rename from worldgen/assets/monocot/agave.py rename to infinigen/assets/monocot/agave.py diff --git a/worldgen/assets/monocot/banana.py b/infinigen/assets/monocot/banana.py similarity index 100% rename from worldgen/assets/monocot/banana.py rename to infinigen/assets/monocot/banana.py diff --git a/worldgen/assets/monocot/generate.py b/infinigen/assets/monocot/generate.py similarity index 100% rename from worldgen/assets/monocot/generate.py rename to infinigen/assets/monocot/generate.py diff --git a/worldgen/assets/monocot/grasses.py b/infinigen/assets/monocot/grasses.py similarity index 100% rename from worldgen/assets/monocot/grasses.py rename to infinigen/assets/monocot/grasses.py diff --git a/worldgen/assets/monocot/growth.py b/infinigen/assets/monocot/growth.py similarity index 100% rename from worldgen/assets/monocot/growth.py rename to infinigen/assets/monocot/growth.py diff --git a/worldgen/assets/monocot/kelp.py b/infinigen/assets/monocot/kelp.py similarity index 100% rename from worldgen/assets/monocot/kelp.py rename to infinigen/assets/monocot/kelp.py diff --git a/worldgen/assets/monocot/pinecone.py b/infinigen/assets/monocot/pinecone.py similarity index 100% rename from worldgen/assets/monocot/pinecone.py rename to infinigen/assets/monocot/pinecone.py diff --git a/worldgen/assets/monocot/tussock.py b/infinigen/assets/monocot/tussock.py similarity index 100% rename from worldgen/assets/monocot/tussock.py rename to infinigen/assets/monocot/tussock.py diff --git a/worldgen/assets/monocot/veratrum.py b/infinigen/assets/monocot/veratrum.py similarity index 100% rename from worldgen/assets/monocot/veratrum.py rename to infinigen/assets/monocot/veratrum.py diff --git a/worldgen/assets/mushroom/__init__.py b/infinigen/assets/mushroom/__init__.py similarity index 100% rename from worldgen/assets/mushroom/__init__.py rename to infinigen/assets/mushroom/__init__.py diff --git a/worldgen/assets/mushroom/cap.py b/infinigen/assets/mushroom/cap.py similarity index 100% rename from worldgen/assets/mushroom/cap.py rename to infinigen/assets/mushroom/cap.py diff --git a/worldgen/assets/mushroom/generate.py b/infinigen/assets/mushroom/generate.py similarity index 100% rename from worldgen/assets/mushroom/generate.py rename to infinigen/assets/mushroom/generate.py diff --git a/worldgen/assets/mushroom/growth.py b/infinigen/assets/mushroom/growth.py similarity index 100% rename from worldgen/assets/mushroom/growth.py rename to infinigen/assets/mushroom/growth.py diff --git a/worldgen/assets/mushroom/stem.py b/infinigen/assets/mushroom/stem.py similarity index 100% rename from worldgen/assets/mushroom/stem.py rename to infinigen/assets/mushroom/stem.py diff --git a/worldgen/assets/blender_rock.py b/infinigen/assets/rocks/blender_rock.py similarity index 96% rename from worldgen/assets/blender_rock.py rename to infinigen/assets/rocks/blender_rock.py index e0ed29322..552b669e4 100644 --- a/worldgen/assets/blender_rock.py +++ b/infinigen/assets/rocks/blender_rock.py @@ -15,6 +15,8 @@ from placement.factory import AssetFactory from assets.utils.tag import tag_object, tag_nodegroup +bpy.ops.preferences.addon_enable(module='add_mesh_extra_objects') + class BlenderRockFactory(AssetFactory): def __init__(self, factory_seed, detail=3): diff --git a/worldgen/assets/boulder.py b/infinigen/assets/rocks/boulder.py similarity index 88% rename from worldgen/assets/boulder.py rename to infinigen/assets/rocks/boulder.py index de682ba41..48888dc9f 100644 --- a/worldgen/assets/boulder.py +++ b/infinigen/assets/rocks/boulder.py @@ -14,21 +14,20 @@ from numpy.random import uniform import gin -from surfaces.scatters import ivy -from util import blender as butil -from util.math import FixedSeed -from nodes.node_wrangler import Nodes, NodeWrangler -from surfaces import surface -from assets.utils.object import trimesh2obj -from assets.utils.decorate import geo_extension, write_attribute -from assets.utils.misc import log_uniform -from placement.factory import AssetFactory -from placement.detail import remesh_with_attrs -from assets.utils.tag import tag_object, tag_nodegroup - -from util.blender import deep_clone_obj -from placement.split_in_view import split_inview -from placement import detail +from infinigen.core.util import blender as butil +from infinigen.core.util.math import FixedSeed +from infinigen.core.nodes.node_wrangler import Nodes, NodeWrangler +from infinigen.core import surface +from infinigen.assets.utils.object import trimesh2obj +from infinigen.assets.utils.decorate import geo_extension, write_attribute +from infinigen.assets.utils.misc import log_uniform +from infinigen.core.placement.factory import AssetFactory +from infinigen.core.placement.detail import remesh_with_attrs +from infinigen.assets.utils.tag import tag_object, tag_nodegroup + +from infinigen.core.util.blender import deep_clone_obj +from infinigen.core.placement.split_in_view import split_inview +from infinigen.core.placement import detail logger = logging.getLogger('boulder') diff --git a/worldgen/assets/pile.py b/infinigen/assets/rocks/pile.py similarity index 100% rename from worldgen/assets/pile.py rename to infinigen/assets/rocks/pile.py diff --git a/worldgen/nodes/nodegroups/__init__.py b/infinigen/assets/scatters/__init__.py similarity index 100% rename from worldgen/nodes/nodegroups/__init__.py rename to infinigen/assets/scatters/__init__.py diff --git a/worldgen/surfaces/scatters/chopped_trees.py b/infinigen/assets/scatters/chopped_trees.py similarity index 100% rename from worldgen/surfaces/scatters/chopped_trees.py rename to infinigen/assets/scatters/chopped_trees.py diff --git a/worldgen/surfaces/scatters/coral_reef.py b/infinigen/assets/scatters/coral_reef.py similarity index 100% rename from worldgen/surfaces/scatters/coral_reef.py rename to infinigen/assets/scatters/coral_reef.py diff --git a/worldgen/surfaces/scatters/decorative_plants.py b/infinigen/assets/scatters/decorative_plants.py similarity index 100% rename from worldgen/surfaces/scatters/decorative_plants.py rename to infinigen/assets/scatters/decorative_plants.py diff --git a/worldgen/surfaces/scatters/fern.py b/infinigen/assets/scatters/fern.py similarity index 100% rename from worldgen/surfaces/scatters/fern.py rename to infinigen/assets/scatters/fern.py diff --git a/worldgen/surfaces/scatters/flowerplant.py b/infinigen/assets/scatters/flowerplant.py similarity index 100% rename from worldgen/surfaces/scatters/flowerplant.py rename to infinigen/assets/scatters/flowerplant.py diff --git a/worldgen/surfaces/scatters/grass.py b/infinigen/assets/scatters/grass.py similarity index 100% rename from worldgen/surfaces/scatters/grass.py rename to infinigen/assets/scatters/grass.py diff --git a/worldgen/surfaces/scatters/ground_leaves.py b/infinigen/assets/scatters/ground_leaves.py similarity index 100% rename from worldgen/surfaces/scatters/ground_leaves.py rename to infinigen/assets/scatters/ground_leaves.py diff --git a/worldgen/surfaces/scatters/ground_mushroom.py b/infinigen/assets/scatters/ground_mushroom.py similarity index 100% rename from worldgen/surfaces/scatters/ground_mushroom.py rename to infinigen/assets/scatters/ground_mushroom.py diff --git a/worldgen/surfaces/scatters/ground_twigs.py b/infinigen/assets/scatters/ground_twigs.py similarity index 100% rename from worldgen/surfaces/scatters/ground_twigs.py rename to infinigen/assets/scatters/ground_twigs.py diff --git a/worldgen/surfaces/scatters/ivy.py b/infinigen/assets/scatters/ivy.py similarity index 100% rename from worldgen/surfaces/scatters/ivy.py rename to infinigen/assets/scatters/ivy.py diff --git a/worldgen/surfaces/scatters/jellyfish.py b/infinigen/assets/scatters/jellyfish.py similarity index 100% rename from worldgen/surfaces/scatters/jellyfish.py rename to infinigen/assets/scatters/jellyfish.py diff --git a/infinigen/assets/scatters/lichen.py b/infinigen/assets/scatters/lichen.py new file mode 100644 index 000000000..ac701f2f5 --- /dev/null +++ b/infinigen/assets/scatters/lichen.py @@ -0,0 +1,54 @@ +# Copyright (c) Princeton University. +# This source code is licensed under the BSD 3-Clause license found in the LICENSE file in the root directory of this source tree. + +# Authors: Lingjie Mei + + +from functools import reduce + +import bpy +import colorsys +import numpy as np +from numpy.random import uniform, normal as N + +from assets.utils.decorate import assign_material +from nodes.node_wrangler import Nodes, NodeWrangler +from placement.factory import AssetFactory, make_asset_collection +from placement.instance_scatter import scatter_instances +from surfaces import surface +from placement.factory import AssetFactory +from infinigen_gpl.extras.diff_growth import build_diff_growth +from assets.utils.object import data2mesh +from assets.utils.mesh import polygon_angles +from util import blender as butil +from assets.utils.tag import tag_object, tag_nodegroup + +from infinigen.assets.debris import LichenFactory + +class Lichen: + + def __init__(self): + self.fac = LichenFactory(np.random.randint(1e5)) + self.col = make_asset_collection(self.fac, name='lichen', n=5) + + def apply(self, obj, selection=None): + + scatter_obj = scatter_instances( + base_obj=obj, collection=self.col, + density=5e3, min_spacing=.08, + scale=1, scale_rand=N(0.5, 0.07), + selection=selection + ) + return scatter_obj + + +def apply(obj, selection=None): + fac = LichenFactory(np.random.randint(1e5)) + col = make_asset_collection(fac, name='lichen', n=5) + scatter_obj = scatter_instances( + base_obj=obj, collection=col, + density=5e3, min_spacing=.08, + scale=1, scale_rand=N(0.5, 0.07), + selection=selection + ) + return scatter_obj diff --git a/worldgen/surfaces/scatters/mollusk.py b/infinigen/assets/scatters/mollusk.py similarity index 100% rename from worldgen/surfaces/scatters/mollusk.py rename to infinigen/assets/scatters/mollusk.py diff --git a/worldgen/surfaces/scatters/monocot.py b/infinigen/assets/scatters/monocot.py similarity index 100% rename from worldgen/surfaces/scatters/monocot.py rename to infinigen/assets/scatters/monocot.py diff --git a/infinigen/assets/scatters/moss.py b/infinigen/assets/scatters/moss.py new file mode 100644 index 000000000..686675dcd --- /dev/null +++ b/infinigen/assets/scatters/moss.py @@ -0,0 +1,40 @@ +# Copyright (c) Princeton University. +# This source code is licensed under the BSD 3-Clause license found in the LICENSE file in the root directory of this source tree. + +# Authors: Lingjie Mei + +import numpy as np +from numpy.random import uniform as U + +from infinigen.core.placement.instance_scatter import scatter_instances +from infinigen.assets.utils.decorate import assign_material +from infinigen.core.placement.factory import make_asset_collection +from infinigen.core.nodes.node_wrangler import Nodes, NodeWrangler +from infinigen.core import surface +from infinigen.core.placement.instance_scatter import scatter_instances + +from infinigen.assets.debris import MossFactory + +class MossCover: + + def __init__(self): + self.col = make_asset_collection(MossFactory(np.random.randint(1e5)), name='moss', n=3) + base_hue = U(.24, .28) + for o in self.col.objects: + assign_material(o, surface.shaderfunc_to_material(MossFactory.shader_moss, + (base_hue + U(-.02, .02)) % 1)) + + def apply(self, obj, selection=None): + + def instance_index(nw: NodeWrangler, n): + return nw.math('MODULO', + nw.new_node(Nodes.FloatToInt, [nw.scalar_multiply(nw.musgrave(10), 2 * n)]), n) + + scatter_obj = scatter_instances( + base_obj=obj, collection=self.col, + density=2e4, min_spacing=.005, + scale=1, scale_rand=U(0.3, 0.7), + selection=selection, + instance_index=instance_index) + + return scatter_obj diff --git a/worldgen/surfaces/scatters/mushroom.py b/infinigen/assets/scatters/mushroom.py similarity index 100% rename from worldgen/surfaces/scatters/mushroom.py rename to infinigen/assets/scatters/mushroom.py diff --git a/infinigen/assets/scatters/pine_needle.py b/infinigen/assets/scatters/pine_needle.py new file mode 100644 index 000000000..1fed0c2c5 --- /dev/null +++ b/infinigen/assets/scatters/pine_needle.py @@ -0,0 +1,35 @@ +# Copyright (c) Princeton University. +# This source code is licensed under the BSD 3-Clause license found in the LICENSE file in the root directory of this source tree. + +# Authors: Lingjie Mei + + +import colorsys + +import bpy +import mathutils +import numpy as np +from numpy.random import uniform as U + +from infinigen.core.placement.factory import make_asset_collection +from infinigen.core.placement.instance_scatter import scatter_instances + +from infinigen.assets.debris import PineNeedleFactory + +def apply(obj, scale=1, density=2e3, n=3, selection=None): + n_species = np.random.randint(2, 3) + factories = [PineNeedleFactory(np.random.randint(1e5)) for i in range(n_species)] + pine_needle = make_asset_collection(factories, + weights=U(0.5, 1, len(factories)), n=n, + verbose=True) + + d = np.deg2rad(U(5, 15)) + scatter_obj = scatter_instances( + base_obj=obj, collection=pine_needle, + vol_density=U(0.01, 0.03), rotation_offset=lambda nw: nw.uniform((-d,)*3, (d,)*3), + ground_offset=lambda nw: nw.uniform(0, 0.015), + scale=U(2, 3), scale_rand=U(0.4, 0.8), scale_rand_axi=U(0.3, 0.7), + selection=selection, taper_density=True + ) + + return scatter_obj, pine_needle diff --git a/worldgen/surfaces/scatters/pinecone.py b/infinigen/assets/scatters/pinecone.py similarity index 100% rename from worldgen/surfaces/scatters/pinecone.py rename to infinigen/assets/scatters/pinecone.py diff --git a/worldgen/surfaces/scatters/rocks.py b/infinigen/assets/scatters/rocks.py similarity index 94% rename from worldgen/surfaces/scatters/rocks.py rename to infinigen/assets/scatters/rocks.py index 31609cab9..d22ed250d 100644 --- a/worldgen/surfaces/scatters/rocks.py +++ b/infinigen/assets/scatters/rocks.py @@ -17,8 +17,6 @@ from util import blender as butil from assets.blender_rock import BlenderRockFactory -bpy.ops.preferences.addon_enable(module='add_mesh_extra_objects') - def apply(obj, n=5, detail=3, selection=None, **kwargs): fac = BlenderRockFactory(np.random.randint(1e5), detail=detail) diff --git a/worldgen/surfaces/scatters/seashells.py b/infinigen/assets/scatters/seashells.py similarity index 100% rename from worldgen/surfaces/scatters/seashells.py rename to infinigen/assets/scatters/seashells.py diff --git a/worldgen/surfaces/scatters/seaweed.py b/infinigen/assets/scatters/seaweed.py similarity index 100% rename from worldgen/surfaces/scatters/seaweed.py rename to infinigen/assets/scatters/seaweed.py diff --git a/worldgen/surfaces/scatters/slime_mold.py b/infinigen/assets/scatters/slime_mold.py similarity index 100% rename from worldgen/surfaces/scatters/slime_mold.py rename to infinigen/assets/scatters/slime_mold.py diff --git a/worldgen/surfaces/scatters/snow_layer.py b/infinigen/assets/scatters/snow_layer.py similarity index 100% rename from worldgen/surfaces/scatters/snow_layer.py rename to infinigen/assets/scatters/snow_layer.py diff --git a/worldgen/surfaces/scatters/urchin.py b/infinigen/assets/scatters/urchin.py similarity index 100% rename from worldgen/surfaces/scatters/urchin.py rename to infinigen/assets/scatters/urchin.py diff --git a/worldgen/rendering/__init__.py b/infinigen/assets/scatters/utils/__init__.py similarity index 100% rename from worldgen/rendering/__init__.py rename to infinigen/assets/scatters/utils/__init__.py diff --git a/worldgen/surfaces/scatters/utils/cluster.py b/infinigen/assets/scatters/utils/cluster.py similarity index 100% rename from worldgen/surfaces/scatters/utils/cluster.py rename to infinigen/assets/scatters/utils/cluster.py diff --git a/worldgen/surfaces/scatters/utils/selection.py b/infinigen/assets/scatters/utils/selection.py similarity index 100% rename from worldgen/surfaces/scatters/utils/selection.py rename to infinigen/assets/scatters/utils/selection.py diff --git a/worldgen/surfaces/scatters/utils/wind.py b/infinigen/assets/scatters/utils/wind.py similarity index 100% rename from worldgen/surfaces/scatters/utils/wind.py rename to infinigen/assets/scatters/utils/wind.py diff --git a/worldgen/assets/small_plants/__init__.py b/infinigen/assets/small_plants/__init__.py similarity index 100% rename from worldgen/assets/small_plants/__init__.py rename to infinigen/assets/small_plants/__init__.py diff --git a/worldgen/assets/small_plants/fern.py b/infinigen/assets/small_plants/fern.py similarity index 100% rename from worldgen/assets/small_plants/fern.py rename to infinigen/assets/small_plants/fern.py diff --git a/worldgen/assets/small_plants/leaf_general.py b/infinigen/assets/small_plants/leaf_general.py similarity index 100% rename from worldgen/assets/small_plants/leaf_general.py rename to infinigen/assets/small_plants/leaf_general.py diff --git a/worldgen/assets/small_plants/leaf_heart.py b/infinigen/assets/small_plants/leaf_heart.py similarity index 100% rename from worldgen/assets/small_plants/leaf_heart.py rename to infinigen/assets/small_plants/leaf_heart.py diff --git a/worldgen/assets/small_plants/num_leaf_grass.py b/infinigen/assets/small_plants/num_leaf_grass.py similarity index 100% rename from worldgen/assets/small_plants/num_leaf_grass.py rename to infinigen/assets/small_plants/num_leaf_grass.py diff --git a/worldgen/assets/small_plants/snake_plant.py b/infinigen/assets/small_plants/snake_plant.py similarity index 100% rename from worldgen/assets/small_plants/snake_plant.py rename to infinigen/assets/small_plants/snake_plant.py diff --git a/worldgen/assets/small_plants/spider_plant.py b/infinigen/assets/small_plants/spider_plant.py similarity index 100% rename from worldgen/assets/small_plants/spider_plant.py rename to infinigen/assets/small_plants/spider_plant.py diff --git a/worldgen/assets/small_plants/succulent.py b/infinigen/assets/small_plants/succulent.py similarity index 100% rename from worldgen/assets/small_plants/succulent.py rename to infinigen/assets/small_plants/succulent.py diff --git a/worldgen/surfaces/templates/__init__.py b/infinigen/assets/surfaces/__init__.py similarity index 100% rename from worldgen/surfaces/templates/__init__.py rename to infinigen/assets/surfaces/__init__.py diff --git a/worldgen/surfaces/templates/aluminumdisp2tut.py b/infinigen/assets/surfaces/aluminumdisp2tut.py similarity index 100% rename from worldgen/surfaces/templates/aluminumdisp2tut.py rename to infinigen/assets/surfaces/aluminumdisp2tut.py diff --git a/worldgen/surfaces/templates/atmosphere_light_haze.py b/infinigen/assets/surfaces/atmosphere_light_haze.py similarity index 100% rename from worldgen/surfaces/templates/atmosphere_light_haze.py rename to infinigen/assets/surfaces/atmosphere_light_haze.py diff --git a/worldgen/surfaces/templates/bark.py b/infinigen/assets/surfaces/bark.py similarity index 100% rename from worldgen/surfaces/templates/bark.py rename to infinigen/assets/surfaces/bark.py diff --git a/worldgen/surfaces/templates/bark_birch.py b/infinigen/assets/surfaces/bark_birch.py similarity index 100% rename from worldgen/surfaces/templates/bark_birch.py rename to infinigen/assets/surfaces/bark_birch.py diff --git a/worldgen/surfaces/templates/bark_random.py b/infinigen/assets/surfaces/bark_random.py similarity index 100% rename from worldgen/surfaces/templates/bark_random.py rename to infinigen/assets/surfaces/bark_random.py diff --git a/worldgen/surfaces/templates/basic_bsdf.py b/infinigen/assets/surfaces/basic_bsdf.py similarity index 100% rename from worldgen/surfaces/templates/basic_bsdf.py rename to infinigen/assets/surfaces/basic_bsdf.py diff --git a/worldgen/surfaces/templates/beak.py b/infinigen/assets/surfaces/beak.py similarity index 100% rename from worldgen/surfaces/templates/beak.py rename to infinigen/assets/surfaces/beak.py diff --git a/worldgen/surfaces/templates/bird.py b/infinigen/assets/surfaces/bird.py similarity index 100% rename from worldgen/surfaces/templates/bird.py rename to infinigen/assets/surfaces/bird.py diff --git a/worldgen/surfaces/templates/blackbody_shader.py b/infinigen/assets/surfaces/blackbody_shader.py similarity index 100% rename from worldgen/surfaces/templates/blackbody_shader.py rename to infinigen/assets/surfaces/blackbody_shader.py diff --git a/worldgen/surfaces/templates/bone.py b/infinigen/assets/surfaces/bone.py similarity index 100% rename from worldgen/surfaces/templates/bone.py rename to infinigen/assets/surfaces/bone.py diff --git a/worldgen/surfaces/templates/chitin.py b/infinigen/assets/surfaces/chitin.py similarity index 100% rename from worldgen/surfaces/templates/chitin.py rename to infinigen/assets/surfaces/chitin.py diff --git a/worldgen/surfaces/templates/chunkyrock.py b/infinigen/assets/surfaces/chunkyrock.py similarity index 100% rename from worldgen/surfaces/templates/chunkyrock.py rename to infinigen/assets/surfaces/chunkyrock.py diff --git a/worldgen/surfaces/templates/cobble_stone.py b/infinigen/assets/surfaces/cobble_stone.py similarity index 100% rename from worldgen/surfaces/templates/cobble_stone.py rename to infinigen/assets/surfaces/cobble_stone.py diff --git a/worldgen/surfaces/templates/cracked_ground.py b/infinigen/assets/surfaces/cracked_ground.py similarity index 100% rename from worldgen/surfaces/templates/cracked_ground.py rename to infinigen/assets/surfaces/cracked_ground.py diff --git a/worldgen/surfaces/templates/dirt.py b/infinigen/assets/surfaces/dirt.py similarity index 100% rename from worldgen/surfaces/templates/dirt.py rename to infinigen/assets/surfaces/dirt.py diff --git a/worldgen/surfaces/templates/eyeball.py b/infinigen/assets/surfaces/eyeball.py similarity index 100% rename from worldgen/surfaces/templates/eyeball.py rename to infinigen/assets/surfaces/eyeball.py diff --git a/worldgen/surfaces/templates/face_size_visualizer.py b/infinigen/assets/surfaces/face_size_visualizer.py similarity index 100% rename from worldgen/surfaces/templates/face_size_visualizer.py rename to infinigen/assets/surfaces/face_size_visualizer.py diff --git a/worldgen/surfaces/templates/fish_eye_shader.py b/infinigen/assets/surfaces/fish_eye_shader.py similarity index 100% rename from worldgen/surfaces/templates/fish_eye_shader.py rename to infinigen/assets/surfaces/fish_eye_shader.py diff --git a/worldgen/surfaces/templates/fishbody.py b/infinigen/assets/surfaces/fishbody.py similarity index 100% rename from worldgen/surfaces/templates/fishbody.py rename to infinigen/assets/surfaces/fishbody.py diff --git a/worldgen/surfaces/templates/fishfin.py b/infinigen/assets/surfaces/fishfin.py similarity index 100% rename from worldgen/surfaces/templates/fishfin.py rename to infinigen/assets/surfaces/fishfin.py diff --git a/worldgen/surfaces/templates/giraffe_attr.py b/infinigen/assets/surfaces/giraffe_attr.py similarity index 100% rename from worldgen/surfaces/templates/giraffe_attr.py rename to infinigen/assets/surfaces/giraffe_attr.py diff --git a/worldgen/surfaces/templates/grass_blade_texture.py b/infinigen/assets/surfaces/grass_blade_texture.py similarity index 100% rename from worldgen/surfaces/templates/grass_blade_texture.py rename to infinigen/assets/surfaces/grass_blade_texture.py diff --git a/worldgen/surfaces/templates/horn.py b/infinigen/assets/surfaces/horn.py similarity index 100% rename from worldgen/surfaces/templates/horn.py rename to infinigen/assets/surfaces/horn.py diff --git a/worldgen/surfaces/templates/ice.py b/infinigen/assets/surfaces/ice.py similarity index 100% rename from worldgen/surfaces/templates/ice.py rename to infinigen/assets/surfaces/ice.py diff --git a/worldgen/surfaces/templates/lava.py b/infinigen/assets/surfaces/lava.py similarity index 100% rename from worldgen/surfaces/templates/lava.py rename to infinigen/assets/surfaces/lava.py diff --git a/worldgen/surfaces/templates/mountain.py b/infinigen/assets/surfaces/mountain.py similarity index 100% rename from worldgen/surfaces/templates/mountain.py rename to infinigen/assets/surfaces/mountain.py diff --git a/worldgen/surfaces/templates/mud.py b/infinigen/assets/surfaces/mud.py similarity index 100% rename from worldgen/surfaces/templates/mud.py rename to infinigen/assets/surfaces/mud.py diff --git a/worldgen/surfaces/templates/new_whitewater.py b/infinigen/assets/surfaces/new_whitewater.py similarity index 100% rename from worldgen/surfaces/templates/new_whitewater.py rename to infinigen/assets/surfaces/new_whitewater.py diff --git a/worldgen/surfaces/templates/nose.py b/infinigen/assets/surfaces/nose.py similarity index 100% rename from worldgen/surfaces/templates/nose.py rename to infinigen/assets/surfaces/nose.py diff --git a/worldgen/surfaces/templates/reptile_brown_circle_attr.py b/infinigen/assets/surfaces/reptile_brown_circle_attr.py similarity index 100% rename from worldgen/surfaces/templates/reptile_brown_circle_attr.py rename to infinigen/assets/surfaces/reptile_brown_circle_attr.py diff --git a/worldgen/surfaces/templates/reptile_gray_attr.py b/infinigen/assets/surfaces/reptile_gray_attr.py similarity index 100% rename from worldgen/surfaces/templates/reptile_gray_attr.py rename to infinigen/assets/surfaces/reptile_gray_attr.py diff --git a/worldgen/surfaces/templates/reptile_two_color_attr.py b/infinigen/assets/surfaces/reptile_two_color_attr.py similarity index 100% rename from worldgen/surfaces/templates/reptile_two_color_attr.py rename to infinigen/assets/surfaces/reptile_two_color_attr.py diff --git a/worldgen/surfaces/templates/river_water.py b/infinigen/assets/surfaces/river_water.py similarity index 100% rename from worldgen/surfaces/templates/river_water.py rename to infinigen/assets/surfaces/river_water.py diff --git a/worldgen/surfaces/templates/sand.py b/infinigen/assets/surfaces/sand.py similarity index 100% rename from worldgen/surfaces/templates/sand.py rename to infinigen/assets/surfaces/sand.py diff --git a/worldgen/surfaces/templates/sandstone.py b/infinigen/assets/surfaces/sandstone.py similarity index 100% rename from worldgen/surfaces/templates/sandstone.py rename to infinigen/assets/surfaces/sandstone.py diff --git a/worldgen/surfaces/templates/scale.py b/infinigen/assets/surfaces/scale.py similarity index 100% rename from worldgen/surfaces/templates/scale.py rename to infinigen/assets/surfaces/scale.py diff --git a/worldgen/surfaces/templates/simple_brownish.py b/infinigen/assets/surfaces/simple_brownish.py similarity index 100% rename from worldgen/surfaces/templates/simple_brownish.py rename to infinigen/assets/surfaces/simple_brownish.py diff --git a/worldgen/surfaces/templates/simple_greenery.py b/infinigen/assets/surfaces/simple_greenery.py similarity index 100% rename from worldgen/surfaces/templates/simple_greenery.py rename to infinigen/assets/surfaces/simple_greenery.py diff --git a/worldgen/surfaces/templates/simple_whitish.py b/infinigen/assets/surfaces/simple_whitish.py similarity index 100% rename from worldgen/surfaces/templates/simple_whitish.py rename to infinigen/assets/surfaces/simple_whitish.py diff --git a/worldgen/surfaces/templates/slimy.py b/infinigen/assets/surfaces/slimy.py similarity index 100% rename from worldgen/surfaces/templates/slimy.py rename to infinigen/assets/surfaces/slimy.py diff --git a/worldgen/surfaces/templates/smoke_material.py b/infinigen/assets/surfaces/smoke_material.py similarity index 100% rename from worldgen/surfaces/templates/smoke_material.py rename to infinigen/assets/surfaces/smoke_material.py diff --git a/worldgen/surfaces/templates/snake_plant.py b/infinigen/assets/surfaces/snake_plant.py similarity index 100% rename from worldgen/surfaces/templates/snake_plant.py rename to infinigen/assets/surfaces/snake_plant.py diff --git a/worldgen/surfaces/templates/snake_scale.py b/infinigen/assets/surfaces/snake_scale.py similarity index 100% rename from worldgen/surfaces/templates/snake_scale.py rename to infinigen/assets/surfaces/snake_scale.py diff --git a/worldgen/surfaces/templates/snake_shaders.py b/infinigen/assets/surfaces/snake_shaders.py similarity index 100% rename from worldgen/surfaces/templates/snake_shaders.py rename to infinigen/assets/surfaces/snake_shaders.py diff --git a/worldgen/surfaces/templates/snow.py b/infinigen/assets/surfaces/snow.py similarity index 100% rename from worldgen/surfaces/templates/snow.py rename to infinigen/assets/surfaces/snow.py diff --git a/worldgen/surfaces/templates/soil.py b/infinigen/assets/surfaces/soil.py similarity index 100% rename from worldgen/surfaces/templates/soil.py rename to infinigen/assets/surfaces/soil.py diff --git a/worldgen/surfaces/templates/spider_plant.py b/infinigen/assets/surfaces/spider_plant.py similarity index 100% rename from worldgen/surfaces/templates/spider_plant.py rename to infinigen/assets/surfaces/spider_plant.py diff --git a/worldgen/surfaces/templates/spot_sparse_attr.py b/infinigen/assets/surfaces/spot_sparse_attr.py similarity index 100% rename from worldgen/surfaces/templates/spot_sparse_attr.py rename to infinigen/assets/surfaces/spot_sparse_attr.py diff --git a/worldgen/surfaces/templates/stone.py b/infinigen/assets/surfaces/stone.py similarity index 100% rename from worldgen/surfaces/templates/stone.py rename to infinigen/assets/surfaces/stone.py diff --git a/worldgen/surfaces/templates/succulent.py b/infinigen/assets/surfaces/succulent.py similarity index 100% rename from worldgen/surfaces/templates/succulent.py rename to infinigen/assets/surfaces/succulent.py diff --git a/worldgen/surfaces/templates/three_color_spots.py b/infinigen/assets/surfaces/three_color_spots.py similarity index 100% rename from worldgen/surfaces/templates/three_color_spots.py rename to infinigen/assets/surfaces/three_color_spots.py diff --git a/worldgen/surfaces/templates/tiger_attr.py b/infinigen/assets/surfaces/tiger_attr.py similarity index 100% rename from worldgen/surfaces/templates/tiger_attr.py rename to infinigen/assets/surfaces/tiger_attr.py diff --git a/worldgen/surfaces/templates/tongue.py b/infinigen/assets/surfaces/tongue.py similarity index 100% rename from worldgen/surfaces/templates/tongue.py rename to infinigen/assets/surfaces/tongue.py diff --git a/worldgen/surfaces/templates/two_color_spots.py b/infinigen/assets/surfaces/two_color_spots.py similarity index 100% rename from worldgen/surfaces/templates/two_color_spots.py rename to infinigen/assets/surfaces/two_color_spots.py diff --git a/worldgen/surfaces/templates/twocolorz.py b/infinigen/assets/surfaces/twocolorz.py similarity index 100% rename from worldgen/surfaces/templates/twocolorz.py rename to infinigen/assets/surfaces/twocolorz.py diff --git a/worldgen/surfaces/templates/water.py b/infinigen/assets/surfaces/water.py similarity index 100% rename from worldgen/surfaces/templates/water.py rename to infinigen/assets/surfaces/water.py diff --git a/worldgen/surfaces/templates/waterfall_material.py b/infinigen/assets/surfaces/waterfall_material.py similarity index 100% rename from worldgen/surfaces/templates/waterfall_material.py rename to infinigen/assets/surfaces/waterfall_material.py diff --git a/worldgen/surfaces/templates/wood.py b/infinigen/assets/surfaces/wood.py similarity index 100% rename from worldgen/surfaces/templates/wood.py rename to infinigen/assets/surfaces/wood.py diff --git a/worldgen/assets/trees/.gitignore b/infinigen/assets/trees/.gitignore similarity index 100% rename from worldgen/assets/trees/.gitignore rename to infinigen/assets/trees/.gitignore diff --git a/worldgen/assets/trees/README.md b/infinigen/assets/trees/README.md similarity index 100% rename from worldgen/assets/trees/README.md rename to infinigen/assets/trees/README.md diff --git a/worldgen/assets/trees/__init__.py b/infinigen/assets/trees/__init__.py similarity index 100% rename from worldgen/assets/trees/__init__.py rename to infinigen/assets/trees/__init__.py diff --git a/worldgen/assets/trees/branch.py b/infinigen/assets/trees/branch.py similarity index 100% rename from worldgen/assets/trees/branch.py rename to infinigen/assets/trees/branch.py diff --git a/worldgen/assets/trees/generate.py b/infinigen/assets/trees/generate.py similarity index 98% rename from worldgen/assets/trees/generate.py rename to infinigen/assets/trees/generate.py index 1a0dfc03d..8801c8811 100644 --- a/worldgen/assets/trees/generate.py +++ b/infinigen/assets/trees/generate.py @@ -29,8 +29,7 @@ from placement import detail from placement.split_in_view import split_inview -from surfaces import surface -from surfaces.scatters import rocks, grass +from infinigen.core import surface from assets.cloud.generate import CloudFactory from ..utils.decorate import write_attribute @@ -233,10 +232,6 @@ def random_tree_child_factory(seed, leaf_params, leaf_type, season, **kwargs): return tree_flower.TreeFlowerFactory(seed, rad=uniform(0.15, 0.25), **kwargs), None elif leaf_type == 'cloud': return CloudFactory(seed), None - elif leaf_type == 'grass': - return grass.GrassTuftFactory(seed), surface.registry('greenery') - elif leaf_type == 'rocks': - return rocks.BlenderRockFactory(seed, detail=1), surface.registry('rock_collection') else: raise ValueError(f'Unrecognized {leaf_type=}') diff --git a/worldgen/assets/trees/tree.py b/infinigen/assets/trees/tree.py similarity index 100% rename from worldgen/assets/trees/tree.py rename to infinigen/assets/trees/tree.py diff --git a/worldgen/assets/trees/tree_flower.py b/infinigen/assets/trees/tree_flower.py similarity index 100% rename from worldgen/assets/trees/tree_flower.py rename to infinigen/assets/trees/tree_flower.py diff --git a/worldgen/assets/trees/treeconfigs.py b/infinigen/assets/trees/treeconfigs.py similarity index 100% rename from worldgen/assets/trees/treeconfigs.py rename to infinigen/assets/trees/treeconfigs.py diff --git a/worldgen/assets/trees/utils/geometrynodes.py b/infinigen/assets/trees/utils/geometrynodes.py similarity index 100% rename from worldgen/assets/trees/utils/geometrynodes.py rename to infinigen/assets/trees/utils/geometrynodes.py diff --git a/worldgen/assets/trees/utils/helper.py b/infinigen/assets/trees/utils/helper.py similarity index 100% rename from worldgen/assets/trees/utils/helper.py rename to infinigen/assets/trees/utils/helper.py diff --git a/worldgen/assets/trees/utils/materials.py b/infinigen/assets/trees/utils/materials.py similarity index 100% rename from worldgen/assets/trees/utils/materials.py rename to infinigen/assets/trees/utils/materials.py diff --git a/worldgen/assets/trees/utils/mesh.py b/infinigen/assets/trees/utils/mesh.py similarity index 100% rename from worldgen/assets/trees/utils/mesh.py rename to infinigen/assets/trees/utils/mesh.py diff --git a/worldgen/assets/tropic_plants/__init__.py b/infinigen/assets/tropic_plants/__init__.py similarity index 100% rename from worldgen/assets/tropic_plants/__init__.py rename to infinigen/assets/tropic_plants/__init__.py diff --git a/worldgen/assets/tropic_plants/coconut_tree.py b/infinigen/assets/tropic_plants/coconut_tree.py similarity index 100% rename from worldgen/assets/tropic_plants/coconut_tree.py rename to infinigen/assets/tropic_plants/coconut_tree.py diff --git a/worldgen/assets/tropic_plants/leaf_banana_tree.py b/infinigen/assets/tropic_plants/leaf_banana_tree.py similarity index 100% rename from worldgen/assets/tropic_plants/leaf_banana_tree.py rename to infinigen/assets/tropic_plants/leaf_banana_tree.py diff --git a/worldgen/assets/tropic_plants/leaf_palm_plant.py b/infinigen/assets/tropic_plants/leaf_palm_plant.py similarity index 100% rename from worldgen/assets/tropic_plants/leaf_palm_plant.py rename to infinigen/assets/tropic_plants/leaf_palm_plant.py diff --git a/worldgen/assets/tropic_plants/leaf_palm_tree.py b/infinigen/assets/tropic_plants/leaf_palm_tree.py similarity index 100% rename from worldgen/assets/tropic_plants/leaf_palm_tree.py rename to infinigen/assets/tropic_plants/leaf_palm_tree.py diff --git a/worldgen/assets/tropic_plants/palm_tree.py b/infinigen/assets/tropic_plants/palm_tree.py similarity index 100% rename from worldgen/assets/tropic_plants/palm_tree.py rename to infinigen/assets/tropic_plants/palm_tree.py diff --git a/worldgen/assets/tropic_plants/tropic_plant_utils.py b/infinigen/assets/tropic_plants/tropic_plant_utils.py similarity index 100% rename from worldgen/assets/tropic_plants/tropic_plant_utils.py rename to infinigen/assets/tropic_plants/tropic_plant_utils.py diff --git a/worldgen/assets/corals/__init__.py b/infinigen/assets/underwater/corals/__init__.py similarity index 100% rename from worldgen/assets/corals/__init__.py rename to infinigen/assets/underwater/corals/__init__.py diff --git a/worldgen/assets/corals/base.py b/infinigen/assets/underwater/corals/base.py similarity index 100% rename from worldgen/assets/corals/base.py rename to infinigen/assets/underwater/corals/base.py diff --git a/worldgen/assets/corals/diff_growth.py b/infinigen/assets/underwater/corals/diff_growth.py similarity index 100% rename from worldgen/assets/corals/diff_growth.py rename to infinigen/assets/underwater/corals/diff_growth.py diff --git a/worldgen/assets/corals/elkhorn.py b/infinigen/assets/underwater/corals/elkhorn.py similarity index 100% rename from worldgen/assets/corals/elkhorn.py rename to infinigen/assets/underwater/corals/elkhorn.py diff --git a/worldgen/assets/corals/fan.py b/infinigen/assets/underwater/corals/fan.py similarity index 100% rename from worldgen/assets/corals/fan.py rename to infinigen/assets/underwater/corals/fan.py diff --git a/worldgen/assets/corals/generate.py b/infinigen/assets/underwater/corals/generate.py similarity index 100% rename from worldgen/assets/corals/generate.py rename to infinigen/assets/underwater/corals/generate.py diff --git a/worldgen/assets/corals/laplacian.py b/infinigen/assets/underwater/corals/laplacian.py similarity index 100% rename from worldgen/assets/corals/laplacian.py rename to infinigen/assets/underwater/corals/laplacian.py diff --git a/worldgen/assets/corals/reaction_diffusion.py b/infinigen/assets/underwater/corals/reaction_diffusion.py similarity index 100% rename from worldgen/assets/corals/reaction_diffusion.py rename to infinigen/assets/underwater/corals/reaction_diffusion.py diff --git a/worldgen/assets/corals/star.py b/infinigen/assets/underwater/corals/star.py similarity index 100% rename from worldgen/assets/corals/star.py rename to infinigen/assets/underwater/corals/star.py diff --git a/worldgen/assets/corals/tentacles.py b/infinigen/assets/underwater/corals/tentacles.py similarity index 100% rename from worldgen/assets/corals/tentacles.py rename to infinigen/assets/underwater/corals/tentacles.py diff --git a/worldgen/assets/corals/tree.py b/infinigen/assets/underwater/corals/tree.py similarity index 100% rename from worldgen/assets/corals/tree.py rename to infinigen/assets/underwater/corals/tree.py diff --git a/worldgen/assets/corals/tube.py b/infinigen/assets/underwater/corals/tube.py similarity index 100% rename from worldgen/assets/corals/tube.py rename to infinigen/assets/underwater/corals/tube.py diff --git a/worldgen/assets/mollusk/__init__.py b/infinigen/assets/underwater/mollusk/__init__.py similarity index 100% rename from worldgen/assets/mollusk/__init__.py rename to infinigen/assets/underwater/mollusk/__init__.py diff --git a/worldgen/assets/mollusk/base.py b/infinigen/assets/underwater/mollusk/base.py similarity index 100% rename from worldgen/assets/mollusk/base.py rename to infinigen/assets/underwater/mollusk/base.py diff --git a/worldgen/assets/mollusk/generate.py b/infinigen/assets/underwater/mollusk/generate.py similarity index 100% rename from worldgen/assets/mollusk/generate.py rename to infinigen/assets/underwater/mollusk/generate.py diff --git a/worldgen/assets/mollusk/shell.py b/infinigen/assets/underwater/mollusk/shell.py similarity index 100% rename from worldgen/assets/mollusk/shell.py rename to infinigen/assets/underwater/mollusk/shell.py diff --git a/worldgen/assets/mollusk/snail.py b/infinigen/assets/underwater/mollusk/snail.py similarity index 100% rename from worldgen/assets/mollusk/snail.py rename to infinigen/assets/underwater/mollusk/snail.py diff --git a/worldgen/assets/seaweed.py b/infinigen/assets/underwater/seaweed.py similarity index 100% rename from worldgen/assets/seaweed.py rename to infinigen/assets/underwater/seaweed.py diff --git a/worldgen/assets/urchin.py b/infinigen/assets/underwater/urchin.py similarity index 100% rename from worldgen/assets/urchin.py rename to infinigen/assets/underwater/urchin.py diff --git a/worldgen/assets/utils/__init__.py b/infinigen/assets/utils/__init__.py similarity index 100% rename from worldgen/assets/utils/__init__.py rename to infinigen/assets/utils/__init__.py diff --git a/worldgen/assets/utils/decorate.py b/infinigen/assets/utils/decorate.py similarity index 100% rename from worldgen/assets/utils/decorate.py rename to infinigen/assets/utils/decorate.py diff --git a/worldgen/assets/utils/draw.py b/infinigen/assets/utils/draw.py similarity index 100% rename from worldgen/assets/utils/draw.py rename to infinigen/assets/utils/draw.py diff --git a/worldgen/assets/utils/laplacian.py b/infinigen/assets/utils/laplacian.py similarity index 100% rename from worldgen/assets/utils/laplacian.py rename to infinigen/assets/utils/laplacian.py diff --git a/worldgen/assets/utils/mesh.py b/infinigen/assets/utils/mesh.py similarity index 100% rename from worldgen/assets/utils/mesh.py rename to infinigen/assets/utils/mesh.py diff --git a/worldgen/assets/utils/misc.py b/infinigen/assets/utils/misc.py similarity index 100% rename from worldgen/assets/utils/misc.py rename to infinigen/assets/utils/misc.py diff --git a/worldgen/assets/utils/nodegroup.py b/infinigen/assets/utils/nodegroup.py similarity index 100% rename from worldgen/assets/utils/nodegroup.py rename to infinigen/assets/utils/nodegroup.py diff --git a/worldgen/assets/utils/object.py b/infinigen/assets/utils/object.py similarity index 100% rename from worldgen/assets/utils/object.py rename to infinigen/assets/utils/object.py diff --git a/worldgen/assets/utils/physics.py b/infinigen/assets/utils/physics.py similarity index 100% rename from worldgen/assets/utils/physics.py rename to infinigen/assets/utils/physics.py diff --git a/worldgen/assets/utils/reaction_diffusion.py b/infinigen/assets/utils/reaction_diffusion.py similarity index 100% rename from worldgen/assets/utils/reaction_diffusion.py rename to infinigen/assets/utils/reaction_diffusion.py diff --git a/worldgen/assets/utils/shortest_path.py b/infinigen/assets/utils/shortest_path.py similarity index 100% rename from worldgen/assets/utils/shortest_path.py rename to infinigen/assets/utils/shortest_path.py diff --git a/worldgen/assets/utils/tag.py b/infinigen/assets/utils/tag.py similarity index 100% rename from worldgen/assets/utils/tag.py rename to infinigen/assets/utils/tag.py diff --git a/worldgen/assets/cloud/__init__.py b/infinigen/assets/weather/cloud/__init__.py similarity index 100% rename from worldgen/assets/cloud/__init__.py rename to infinigen/assets/weather/cloud/__init__.py diff --git a/worldgen/assets/cloud/base.py b/infinigen/assets/weather/cloud/base.py similarity index 100% rename from worldgen/assets/cloud/base.py rename to infinigen/assets/weather/cloud/base.py diff --git a/worldgen/assets/cloud/cloud.py b/infinigen/assets/weather/cloud/cloud.py similarity index 100% rename from worldgen/assets/cloud/cloud.py rename to infinigen/assets/weather/cloud/cloud.py diff --git a/worldgen/assets/cloud/generate.py b/infinigen/assets/weather/cloud/generate.py similarity index 100% rename from worldgen/assets/cloud/generate.py rename to infinigen/assets/weather/cloud/generate.py diff --git a/worldgen/assets/cloud/node.py b/infinigen/assets/weather/cloud/node.py similarity index 100% rename from worldgen/assets/cloud/node.py rename to infinigen/assets/weather/cloud/node.py diff --git a/worldgen/lighting/kole_clouds.py b/infinigen/assets/weather/kole_clouds.py similarity index 100% rename from worldgen/lighting/kole_clouds.py rename to infinigen/assets/weather/kole_clouds.py diff --git a/worldgen/assets/particles.py b/infinigen/assets/weather/particles.py similarity index 100% rename from worldgen/assets/particles.py rename to infinigen/assets/weather/particles.py diff --git a/worldgen/core.py b/infinigen/core/core.py similarity index 100% rename from worldgen/core.py rename to infinigen/core/core.py diff --git a/worldgen/surfaces/__init__.py b/infinigen/core/nodes/__init__.py similarity index 100% rename from worldgen/surfaces/__init__.py rename to infinigen/core/nodes/__init__.py diff --git a/worldgen/nodes/color.py b/infinigen/core/nodes/color.py similarity index 100% rename from worldgen/nodes/color.py rename to infinigen/core/nodes/color.py diff --git a/worldgen/nodes/compatibility.py b/infinigen/core/nodes/compatibility.py similarity index 100% rename from worldgen/nodes/compatibility.py rename to infinigen/core/nodes/compatibility.py diff --git a/worldgen/nodes/node_info.py b/infinigen/core/nodes/node_info.py similarity index 100% rename from worldgen/nodes/node_info.py rename to infinigen/core/nodes/node_info.py diff --git a/worldgen/nodes/node_transpiler/changelog.md b/infinigen/core/nodes/node_transpiler/changelog.md similarity index 100% rename from worldgen/nodes/node_transpiler/changelog.md rename to infinigen/core/nodes/node_transpiler/changelog.md diff --git a/worldgen/nodes/node_transpiler/transpiler.py b/infinigen/core/nodes/node_transpiler/transpiler.py similarity index 100% rename from worldgen/nodes/node_transpiler/transpiler.py rename to infinigen/core/nodes/node_transpiler/transpiler.py diff --git a/worldgen/nodes/node_transpiler/transpiler_dev_script.py b/infinigen/core/nodes/node_transpiler/transpiler_dev_script.py similarity index 100% rename from worldgen/nodes/node_transpiler/transpiler_dev_script.py rename to infinigen/core/nodes/node_transpiler/transpiler_dev_script.py diff --git a/worldgen/nodes/node_utils.py b/infinigen/core/nodes/node_utils.py similarity index 100% rename from worldgen/nodes/node_utils.py rename to infinigen/core/nodes/node_utils.py diff --git a/worldgen/nodes/node_wrangler.py b/infinigen/core/nodes/node_wrangler.py similarity index 100% rename from worldgen/nodes/node_wrangler.py rename to infinigen/core/nodes/node_wrangler.py diff --git a/worldgen/surfaces/scatters/__init__.py b/infinigen/core/nodes/nodegroups/__init__.py similarity index 100% rename from worldgen/surfaces/scatters/__init__.py rename to infinigen/core/nodes/nodegroups/__init__.py diff --git a/worldgen/nodes/nodegroups/transfer_attributes.py b/infinigen/core/nodes/nodegroups/transfer_attributes.py similarity index 100% rename from worldgen/nodes/nodegroups/transfer_attributes.py rename to infinigen/core/nodes/nodegroups/transfer_attributes.py diff --git a/worldgen/placement/animation_policy.py b/infinigen/core/placement/animation_policy.py similarity index 100% rename from worldgen/placement/animation_policy.py rename to infinigen/core/placement/animation_policy.py diff --git a/worldgen/placement/camera.py b/infinigen/core/placement/camera.py similarity index 100% rename from worldgen/placement/camera.py rename to infinigen/core/placement/camera.py diff --git a/worldgen/placement/density.py b/infinigen/core/placement/density.py similarity index 100% rename from worldgen/placement/density.py rename to infinigen/core/placement/density.py diff --git a/worldgen/placement/detail.py b/infinigen/core/placement/detail.py similarity index 100% rename from worldgen/placement/detail.py rename to infinigen/core/placement/detail.py diff --git a/worldgen/placement/factory.py b/infinigen/core/placement/factory.py similarity index 100% rename from worldgen/placement/factory.py rename to infinigen/core/placement/factory.py diff --git a/worldgen/placement/instance_scatter.py b/infinigen/core/placement/instance_scatter.py similarity index 100% rename from worldgen/placement/instance_scatter.py rename to infinigen/core/placement/instance_scatter.py diff --git a/worldgen/placement/particles.py b/infinigen/core/placement/particles.py similarity index 100% rename from worldgen/placement/particles.py rename to infinigen/core/placement/particles.py diff --git a/worldgen/placement/placement.py b/infinigen/core/placement/placement.py similarity index 100% rename from worldgen/placement/placement.py rename to infinigen/core/placement/placement.py diff --git a/worldgen/placement/split_in_view.py b/infinigen/core/placement/split_in_view.py similarity index 100% rename from worldgen/placement/split_in_view.py rename to infinigen/core/placement/split_in_view.py diff --git a/worldgen/surfaces/scatters/utils/__init__.py b/infinigen/core/rendering/__init__.py similarity index 100% rename from worldgen/surfaces/scatters/utils/__init__.py rename to infinigen/core/rendering/__init__.py diff --git a/worldgen/rendering/auto_exposure.py b/infinigen/core/rendering/auto_exposure.py similarity index 100% rename from worldgen/rendering/auto_exposure.py rename to infinigen/core/rendering/auto_exposure.py diff --git a/worldgen/rendering/post_render.py b/infinigen/core/rendering/post_render.py similarity index 100% rename from worldgen/rendering/post_render.py rename to infinigen/core/rendering/post_render.py diff --git a/worldgen/rendering/render.py b/infinigen/core/rendering/render.py similarity index 100% rename from worldgen/rendering/render.py rename to infinigen/core/rendering/render.py diff --git a/worldgen/rendering/resample.py b/infinigen/core/rendering/resample.py similarity index 100% rename from worldgen/rendering/resample.py rename to infinigen/core/rendering/resample.py diff --git a/worldgen/tools/export/__init__.py b/infinigen/core/surfaces/__init__.py similarity index 100% rename from worldgen/tools/export/__init__.py rename to infinigen/core/surfaces/__init__.py diff --git a/worldgen/surfaces/surface.py b/infinigen/core/surfaces/surface.py similarity index 100% rename from worldgen/surfaces/surface.py rename to infinigen/core/surfaces/surface.py diff --git a/worldgen/surfaces/surface_utils.py b/infinigen/core/surfaces/surface_utils.py similarity index 100% rename from worldgen/surfaces/surface_utils.py rename to infinigen/core/surfaces/surface_utils.py diff --git a/worldgen/util/blender.py b/infinigen/core/util/blender.py similarity index 100% rename from worldgen/util/blender.py rename to infinigen/core/util/blender.py diff --git a/worldgen/util/camera.py b/infinigen/core/util/camera.py similarity index 100% rename from worldgen/util/camera.py rename to infinigen/core/util/camera.py diff --git a/worldgen/util/exporting.py b/infinigen/core/util/exporting.py similarity index 100% rename from worldgen/util/exporting.py rename to infinigen/core/util/exporting.py diff --git a/worldgen/util/logging.py b/infinigen/core/util/logging.py similarity index 100% rename from worldgen/util/logging.py rename to infinigen/core/util/logging.py diff --git a/worldgen/util/math.py b/infinigen/core/util/math.py similarity index 100% rename from worldgen/util/math.py rename to infinigen/core/util/math.py diff --git a/worldgen/util/organization.py b/infinigen/core/util/organization.py similarity index 100% rename from worldgen/util/organization.py rename to infinigen/core/util/organization.py diff --git a/worldgen/util/pipeline.py b/infinigen/core/util/pipeline.py similarity index 100% rename from worldgen/util/pipeline.py rename to infinigen/core/util/pipeline.py diff --git a/worldgen/util/random.py b/infinigen/core/util/random.py similarity index 100% rename from worldgen/util/random.py rename to infinigen/core/util/random.py diff --git a/infinigen/datagen/__init__.py b/infinigen/datagen/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/worldgen/tools/pipeline_configs/.gitignore b/infinigen/datagen/configs/.gitignore similarity index 100% rename from worldgen/tools/pipeline_configs/.gitignore rename to infinigen/datagen/configs/.gitignore diff --git a/worldgen/tools/pipeline_configs/asset_demo.gin b/infinigen/datagen/configs/asset_demo.gin similarity index 100% rename from worldgen/tools/pipeline_configs/asset_demo.gin rename to infinigen/datagen/configs/asset_demo.gin diff --git a/worldgen/tools/pipeline_configs/base.gin b/infinigen/datagen/configs/base.gin similarity index 100% rename from worldgen/tools/pipeline_configs/base.gin rename to infinigen/datagen/configs/base.gin diff --git a/infinigen/datagen/configs/compute_platform/local_128GB.gin b/infinigen/datagen/configs/compute_platform/local_128GB.gin new file mode 100644 index 000000000..374dfab6e --- /dev/null +++ b/infinigen/datagen/configs/compute_platform/local_128GB.gin @@ -0,0 +1,5 @@ +include 'infinigen/datagen/configs/compute_platform/local_256GB.gin' + +manage_datagen_jobs.num_concurrent=8 + + diff --git a/infinigen/datagen/configs/compute_platform/local_16GB.gin b/infinigen/datagen/configs/compute_platform/local_16GB.gin new file mode 100644 index 000000000..5150853b8 --- /dev/null +++ b/infinigen/datagen/configs/compute_platform/local_16GB.gin @@ -0,0 +1,6 @@ +include 'infinigen/datagen/configs/compute_platform/local_256GB.gin' + +manage_datagen_jobs.num_concurrent=1 + + + diff --git a/worldgen/tools/pipeline_configs/compute_platform/local_256GB.gin b/infinigen/datagen/configs/compute_platform/local_256GB.gin similarity index 100% rename from worldgen/tools/pipeline_configs/compute_platform/local_256GB.gin rename to infinigen/datagen/configs/compute_platform/local_256GB.gin diff --git a/infinigen/datagen/configs/compute_platform/local_64GB.gin b/infinigen/datagen/configs/compute_platform/local_64GB.gin new file mode 100644 index 000000000..ca98c6f5d --- /dev/null +++ b/infinigen/datagen/configs/compute_platform/local_64GB.gin @@ -0,0 +1,5 @@ +include 'infinigen/datagen/configs/compute_platform/local_256GB.gin' + +manage_datagen_jobs.num_concurrent=3 + + diff --git a/worldgen/tools/pipeline_configs/compute_platform/slurm.gin b/infinigen/datagen/configs/compute_platform/slurm.gin similarity index 100% rename from worldgen/tools/pipeline_configs/compute_platform/slurm.gin rename to infinigen/datagen/configs/compute_platform/slurm.gin diff --git a/worldgen/tools/pipeline_configs/compute_platform/slurm_1h.gin b/infinigen/datagen/configs/compute_platform/slurm_1h.gin similarity index 80% rename from worldgen/tools/pipeline_configs/compute_platform/slurm_1h.gin rename to infinigen/datagen/configs/compute_platform/slurm_1h.gin index cf5533bc8..6319f9a41 100644 --- a/worldgen/tools/pipeline_configs/compute_platform/slurm_1h.gin +++ b/infinigen/datagen/configs/compute_platform/slurm_1h.gin @@ -1,4 +1,4 @@ -include 'tools/pipeline_configs/compute_platform/slurm.gin' +include 'infinigen/datagen/configs/compute_platform/slurm.gin' iterate_scene_tasks.view_block_size = 3 diff --git a/worldgen/tools/pipeline_configs/compute_platform/slurm_cpuheavy.gin b/infinigen/datagen/configs/compute_platform/slurm_cpuheavy.gin similarity index 100% rename from worldgen/tools/pipeline_configs/compute_platform/slurm_cpuheavy.gin rename to infinigen/datagen/configs/compute_platform/slurm_cpuheavy.gin diff --git a/worldgen/tools/pipeline_configs/compute_platform/slurm_high_memory.gin b/infinigen/datagen/configs/compute_platform/slurm_high_memory.gin similarity index 84% rename from worldgen/tools/pipeline_configs/compute_platform/slurm_high_memory.gin rename to infinigen/datagen/configs/compute_platform/slurm_high_memory.gin index ffb4086d8..0f22426e3 100644 --- a/worldgen/tools/pipeline_configs/compute_platform/slurm_high_memory.gin +++ b/infinigen/datagen/configs/compute_platform/slurm_high_memory.gin @@ -1,4 +1,4 @@ -include 'tools/pipeline_configs/compute_platform/slurm.gin' +include 'infinigen/datagen/configs/compute_platform/slurm.gin' # Combined (only used when `stereo_combined.gin` or similar is included) queue_combined.mem_gb = 48 diff --git a/worldgen/tools/pipeline_configs/cuda_terrain.gin b/infinigen/datagen/configs/cuda_terrain.gin similarity index 100% rename from worldgen/tools/pipeline_configs/cuda_terrain.gin rename to infinigen/datagen/configs/cuda_terrain.gin diff --git a/worldgen/tools/pipeline_configs/data_schema/monocular.gin b/infinigen/datagen/configs/data_schema/monocular.gin similarity index 100% rename from worldgen/tools/pipeline_configs/data_schema/monocular.gin rename to infinigen/datagen/configs/data_schema/monocular.gin diff --git a/infinigen/datagen/configs/data_schema/monocular_flow.gin b/infinigen/datagen/configs/data_schema/monocular_flow.gin new file mode 100644 index 000000000..f92f9e9d4 --- /dev/null +++ b/infinigen/datagen/configs/data_schema/monocular_flow.gin @@ -0,0 +1,4 @@ +include 'infinigen/datagen/configs/data_schema/monocular.gin' +iterate_scene_tasks.frame_range=(1, 2) + + diff --git a/worldgen/tools/pipeline_configs/data_schema/monocular_video.gin b/infinigen/datagen/configs/data_schema/monocular_video.gin similarity index 100% rename from worldgen/tools/pipeline_configs/data_schema/monocular_video.gin rename to infinigen/datagen/configs/data_schema/monocular_video.gin diff --git a/worldgen/tools/pipeline_configs/data_schema/stereo.gin b/infinigen/datagen/configs/data_schema/stereo.gin similarity index 100% rename from worldgen/tools/pipeline_configs/data_schema/stereo.gin rename to infinigen/datagen/configs/data_schema/stereo.gin diff --git a/infinigen/datagen/configs/data_schema/stereo_1h_jobs.gin b/infinigen/datagen/configs/data_schema/stereo_1h_jobs.gin new file mode 100644 index 000000000..1923246e9 --- /dev/null +++ b/infinigen/datagen/configs/data_schema/stereo_1h_jobs.gin @@ -0,0 +1,14 @@ + +iterate_scene_tasks.frame_range=(1, 1) +iterate_scene_tasks.cam_id_ranges =(1, 2) + +iterate_scene_tasks.global_tasks = [ + {'name': "coarse", 'func': @queue_coarse}, + {'name': "fine", 'func': @queue_populate}, + {'name': "fineterrain", 'func': @queue_fine_terrain}, +] +iterate_scene_tasks.view_dependent_tasks = [] +iterate_scene_tasks.camera_dependent_tasks = [ + {'name': 'rendershort', 'func': @rendershort/queue_render}, + {'name': 'renderbackup', 'func': @renderbackup/queue_render, 'condition': 'prev_failed'} +] diff --git a/infinigen/datagen/configs/data_schema/stereo_video.gin b/infinigen/datagen/configs/data_schema/stereo_video.gin new file mode 100644 index 000000000..48caec7f5 --- /dev/null +++ b/infinigen/datagen/configs/data_schema/stereo_video.gin @@ -0,0 +1,2 @@ +include 'infinigen/datagen/configs/data_schema/monocular_video.gin' +iterate_scene_tasks.cam_id_ranges = [1, 2] diff --git a/worldgen/tools/pipeline_configs/gt_options/blender_gt.gin b/infinigen/datagen/configs/gt_options/blender_gt.gin similarity index 100% rename from worldgen/tools/pipeline_configs/gt_options/blender_gt.gin rename to infinigen/datagen/configs/gt_options/blender_gt.gin diff --git a/worldgen/tools/pipeline_configs/gt_options/gt_test.gin b/infinigen/datagen/configs/gt_options/gt_test.gin similarity index 100% rename from worldgen/tools/pipeline_configs/gt_options/gt_test.gin rename to infinigen/datagen/configs/gt_options/gt_test.gin diff --git a/worldgen/tools/pipeline_configs/gt_options/opengl_gt.gin b/infinigen/datagen/configs/gt_options/opengl_gt.gin similarity index 100% rename from worldgen/tools/pipeline_configs/gt_options/opengl_gt.gin rename to infinigen/datagen/configs/gt_options/opengl_gt.gin diff --git a/worldgen/tools/pipeline_configs/gt_options/opengl_gt_noshortrender.gin b/infinigen/datagen/configs/gt_options/opengl_gt_noshortrender.gin similarity index 78% rename from worldgen/tools/pipeline_configs/gt_options/opengl_gt_noshortrender.gin rename to infinigen/datagen/configs/gt_options/opengl_gt_noshortrender.gin index a3db10fa7..f6023c87c 100644 --- a/worldgen/tools/pipeline_configs/gt_options/opengl_gt_noshortrender.gin +++ b/infinigen/datagen/configs/gt_options/opengl_gt_noshortrender.gin @@ -1,4 +1,4 @@ -include 'tools/pipeline_configs/opengl_gt.gin' # incase someone adds other settings to it +include 'infinigen/datagen/configs/opengl_gt.gin' # incase someone adds other settings to it iterate_scene_tasks.camera_dependent_tasks = [ {'name': 'renderbackup', 'func': @renderbackup/queue_render}, # still call it "backup" since it is reusing the compute_platform's backup config. we are just skipping straight to the backup diff --git a/worldgen/tools/pipeline_configs/upload.gin b/infinigen/datagen/configs/upload.gin similarity index 100% rename from worldgen/tools/pipeline_configs/upload.gin rename to infinigen/datagen/configs/upload.gin diff --git a/process_mesh/.gitignore b/infinigen/datagen/custom_ground_truth/.gitignore similarity index 100% rename from process_mesh/.gitignore rename to infinigen/datagen/custom_ground_truth/.gitignore diff --git a/process_mesh/CMakeLists.txt b/infinigen/datagen/custom_ground_truth/CMakeLists.txt similarity index 100% rename from process_mesh/CMakeLists.txt rename to infinigen/datagen/custom_ground_truth/CMakeLists.txt diff --git a/process_mesh/blender_object.cpp b/infinigen/datagen/custom_ground_truth/blender_object.cpp similarity index 100% rename from process_mesh/blender_object.cpp rename to infinigen/datagen/custom_ground_truth/blender_object.cpp diff --git a/process_mesh/blender_object.hpp b/infinigen/datagen/custom_ground_truth/blender_object.hpp similarity index 100% rename from process_mesh/blender_object.hpp rename to infinigen/datagen/custom_ground_truth/blender_object.hpp diff --git a/process_mesh/buffer_arrays.cpp b/infinigen/datagen/custom_ground_truth/buffer_arrays.cpp similarity index 100% rename from process_mesh/buffer_arrays.cpp rename to infinigen/datagen/custom_ground_truth/buffer_arrays.cpp diff --git a/process_mesh/buffer_arrays.hpp b/infinigen/datagen/custom_ground_truth/buffer_arrays.hpp similarity index 100% rename from process_mesh/buffer_arrays.hpp rename to infinigen/datagen/custom_ground_truth/buffer_arrays.hpp diff --git a/process_mesh/camera_view.cpp b/infinigen/datagen/custom_ground_truth/camera_view.cpp similarity index 100% rename from process_mesh/camera_view.cpp rename to infinigen/datagen/custom_ground_truth/camera_view.cpp diff --git a/process_mesh/camera_view.hpp b/infinigen/datagen/custom_ground_truth/camera_view.hpp similarity index 100% rename from process_mesh/camera_view.hpp rename to infinigen/datagen/custom_ground_truth/camera_view.hpp diff --git a/process_mesh/compress_masks.py b/infinigen/datagen/custom_ground_truth/compress_masks.py similarity index 100% rename from process_mesh/compress_masks.py rename to infinigen/datagen/custom_ground_truth/compress_masks.py diff --git a/process_mesh/dependencies/argparse b/infinigen/datagen/custom_ground_truth/dependencies/argparse similarity index 100% rename from process_mesh/dependencies/argparse rename to infinigen/datagen/custom_ground_truth/dependencies/argparse diff --git a/process_mesh/dependencies/cnpy b/infinigen/datagen/custom_ground_truth/dependencies/cnpy similarity index 100% rename from process_mesh/dependencies/cnpy rename to infinigen/datagen/custom_ground_truth/dependencies/cnpy diff --git a/process_mesh/dependencies/eigen b/infinigen/datagen/custom_ground_truth/dependencies/eigen similarity index 100% rename from process_mesh/dependencies/eigen rename to infinigen/datagen/custom_ground_truth/dependencies/eigen diff --git a/process_mesh/dependencies/fast_obj b/infinigen/datagen/custom_ground_truth/dependencies/fast_obj similarity index 100% rename from process_mesh/dependencies/fast_obj rename to infinigen/datagen/custom_ground_truth/dependencies/fast_obj diff --git a/process_mesh/dependencies/glad/include/EGL/eglplatform.h b/infinigen/datagen/custom_ground_truth/dependencies/glad/include/EGL/eglplatform.h similarity index 100% rename from process_mesh/dependencies/glad/include/EGL/eglplatform.h rename to infinigen/datagen/custom_ground_truth/dependencies/glad/include/EGL/eglplatform.h diff --git a/process_mesh/dependencies/glad/include/KHR/khrplatform.h b/infinigen/datagen/custom_ground_truth/dependencies/glad/include/KHR/khrplatform.h similarity index 100% rename from process_mesh/dependencies/glad/include/KHR/khrplatform.h rename to infinigen/datagen/custom_ground_truth/dependencies/glad/include/KHR/khrplatform.h diff --git a/process_mesh/dependencies/glad/include/glad/glad.h b/infinigen/datagen/custom_ground_truth/dependencies/glad/include/glad/glad.h similarity index 100% rename from process_mesh/dependencies/glad/include/glad/glad.h rename to infinigen/datagen/custom_ground_truth/dependencies/glad/include/glad/glad.h diff --git a/process_mesh/dependencies/glad/include/glad/glad_egl.h b/infinigen/datagen/custom_ground_truth/dependencies/glad/include/glad/glad_egl.h similarity index 100% rename from process_mesh/dependencies/glad/include/glad/glad_egl.h rename to infinigen/datagen/custom_ground_truth/dependencies/glad/include/glad/glad_egl.h diff --git a/process_mesh/dependencies/glad/src/glad.c b/infinigen/datagen/custom_ground_truth/dependencies/glad/src/glad.c similarity index 100% rename from process_mesh/dependencies/glad/src/glad.c rename to infinigen/datagen/custom_ground_truth/dependencies/glad/src/glad.c diff --git a/process_mesh/dependencies/glad/src/glad_egl.c b/infinigen/datagen/custom_ground_truth/dependencies/glad/src/glad_egl.c similarity index 100% rename from process_mesh/dependencies/glad/src/glad_egl.c rename to infinigen/datagen/custom_ground_truth/dependencies/glad/src/glad_egl.c diff --git a/process_mesh/dependencies/glfw b/infinigen/datagen/custom_ground_truth/dependencies/glfw similarity index 100% rename from process_mesh/dependencies/glfw rename to infinigen/datagen/custom_ground_truth/dependencies/glfw diff --git a/process_mesh/dependencies/glm b/infinigen/datagen/custom_ground_truth/dependencies/glm similarity index 100% rename from process_mesh/dependencies/glm rename to infinigen/datagen/custom_ground_truth/dependencies/glm diff --git a/process_mesh/dependencies/indicators b/infinigen/datagen/custom_ground_truth/dependencies/indicators similarity index 100% rename from process_mesh/dependencies/indicators rename to infinigen/datagen/custom_ground_truth/dependencies/indicators diff --git a/process_mesh/dependencies/json b/infinigen/datagen/custom_ground_truth/dependencies/json similarity index 100% rename from process_mesh/dependencies/json rename to infinigen/datagen/custom_ground_truth/dependencies/json diff --git a/process_mesh/dependencies/scharstein_flow_viz/README.txt b/infinigen/datagen/custom_ground_truth/dependencies/scharstein_flow_viz/README.txt similarity index 100% rename from process_mesh/dependencies/scharstein_flow_viz/README.txt rename to infinigen/datagen/custom_ground_truth/dependencies/scharstein_flow_viz/README.txt diff --git a/process_mesh/dependencies/scharstein_flow_viz/colorcode.cpp b/infinigen/datagen/custom_ground_truth/dependencies/scharstein_flow_viz/colorcode.cpp similarity index 100% rename from process_mesh/dependencies/scharstein_flow_viz/colorcode.cpp rename to infinigen/datagen/custom_ground_truth/dependencies/scharstein_flow_viz/colorcode.cpp diff --git a/process_mesh/dependencies/scharstein_flow_viz/colorcode.h b/infinigen/datagen/custom_ground_truth/dependencies/scharstein_flow_viz/colorcode.h similarity index 100% rename from process_mesh/dependencies/scharstein_flow_viz/colorcode.h rename to infinigen/datagen/custom_ground_truth/dependencies/scharstein_flow_viz/colorcode.h diff --git a/process_mesh/dependencies/stb b/infinigen/datagen/custom_ground_truth/dependencies/stb similarity index 100% rename from process_mesh/dependencies/stb rename to infinigen/datagen/custom_ground_truth/dependencies/stb diff --git a/process_mesh/dependencies/tinycolormap b/infinigen/datagen/custom_ground_truth/dependencies/tinycolormap similarity index 100% rename from process_mesh/dependencies/tinycolormap rename to infinigen/datagen/custom_ground_truth/dependencies/tinycolormap diff --git a/process_mesh/glsl/hair.frag b/infinigen/datagen/custom_ground_truth/glsl/hair.frag similarity index 100% rename from process_mesh/glsl/hair.frag rename to infinigen/datagen/custom_ground_truth/glsl/hair.frag diff --git a/process_mesh/glsl/hair.geom b/infinigen/datagen/custom_ground_truth/glsl/hair.geom similarity index 100% rename from process_mesh/glsl/hair.geom rename to infinigen/datagen/custom_ground_truth/glsl/hair.geom diff --git a/process_mesh/glsl/hair.vert b/infinigen/datagen/custom_ground_truth/glsl/hair.vert similarity index 100% rename from process_mesh/glsl/hair.vert rename to infinigen/datagen/custom_ground_truth/glsl/hair.vert diff --git a/process_mesh/glsl/next_wings.vert b/infinigen/datagen/custom_ground_truth/glsl/next_wings.vert similarity index 100% rename from process_mesh/glsl/next_wings.vert rename to infinigen/datagen/custom_ground_truth/glsl/next_wings.vert diff --git a/process_mesh/glsl/spine.frag b/infinigen/datagen/custom_ground_truth/glsl/spine.frag similarity index 100% rename from process_mesh/glsl/spine.frag rename to infinigen/datagen/custom_ground_truth/glsl/spine.frag diff --git a/process_mesh/glsl/spine.geom b/infinigen/datagen/custom_ground_truth/glsl/spine.geom similarity index 100% rename from process_mesh/glsl/spine.geom rename to infinigen/datagen/custom_ground_truth/glsl/spine.geom diff --git a/process_mesh/glsl/wings.frag b/infinigen/datagen/custom_ground_truth/glsl/wings.frag similarity index 100% rename from process_mesh/glsl/wings.frag rename to infinigen/datagen/custom_ground_truth/glsl/wings.frag diff --git a/process_mesh/glsl/wings.geom b/infinigen/datagen/custom_ground_truth/glsl/wings.geom similarity index 100% rename from process_mesh/glsl/wings.geom rename to infinigen/datagen/custom_ground_truth/glsl/wings.geom diff --git a/process_mesh/glsl/wings.vert b/infinigen/datagen/custom_ground_truth/glsl/wings.vert similarity index 100% rename from process_mesh/glsl/wings.vert rename to infinigen/datagen/custom_ground_truth/glsl/wings.vert diff --git a/process_mesh/io.cpp b/infinigen/datagen/custom_ground_truth/io.cpp similarity index 100% rename from process_mesh/io.cpp rename to infinigen/datagen/custom_ground_truth/io.cpp diff --git a/process_mesh/io.hpp b/infinigen/datagen/custom_ground_truth/io.hpp similarity index 100% rename from process_mesh/io.hpp rename to infinigen/datagen/custom_ground_truth/io.hpp diff --git a/process_mesh/load_blender_mesh.cpp b/infinigen/datagen/custom_ground_truth/load_blender_mesh.cpp similarity index 100% rename from process_mesh/load_blender_mesh.cpp rename to infinigen/datagen/custom_ground_truth/load_blender_mesh.cpp diff --git a/process_mesh/load_blender_mesh.hpp b/infinigen/datagen/custom_ground_truth/load_blender_mesh.hpp similarity index 100% rename from process_mesh/load_blender_mesh.hpp rename to infinigen/datagen/custom_ground_truth/load_blender_mesh.hpp diff --git a/process_mesh/main.cpp b/infinigen/datagen/custom_ground_truth/main.cpp similarity index 100% rename from process_mesh/main.cpp rename to infinigen/datagen/custom_ground_truth/main.cpp diff --git a/process_mesh/shader.cpp b/infinigen/datagen/custom_ground_truth/shader.cpp similarity index 100% rename from process_mesh/shader.cpp rename to infinigen/datagen/custom_ground_truth/shader.cpp diff --git a/process_mesh/shader.hpp b/infinigen/datagen/custom_ground_truth/shader.hpp similarity index 100% rename from process_mesh/shader.hpp rename to infinigen/datagen/custom_ground_truth/shader.hpp diff --git a/process_mesh/show.py b/infinigen/datagen/custom_ground_truth/show.py similarity index 100% rename from process_mesh/show.py rename to infinigen/datagen/custom_ground_truth/show.py diff --git a/process_mesh/string_tools.cpp b/infinigen/datagen/custom_ground_truth/string_tools.cpp similarity index 100% rename from process_mesh/string_tools.cpp rename to infinigen/datagen/custom_ground_truth/string_tools.cpp diff --git a/process_mesh/string_tools.hpp b/infinigen/datagen/custom_ground_truth/string_tools.hpp similarity index 100% rename from process_mesh/string_tools.hpp rename to infinigen/datagen/custom_ground_truth/string_tools.hpp diff --git a/process_mesh/utils.cpp b/infinigen/datagen/custom_ground_truth/utils.cpp similarity index 100% rename from process_mesh/utils.cpp rename to infinigen/datagen/custom_ground_truth/utils.cpp diff --git a/process_mesh/utils.hpp b/infinigen/datagen/custom_ground_truth/utils.hpp similarity index 100% rename from process_mesh/utils.hpp rename to infinigen/datagen/custom_ground_truth/utils.hpp diff --git a/worldgen/tools/job_funcs.py b/infinigen/datagen/job_funcs.py similarity index 97% rename from worldgen/tools/job_funcs.py rename to infinigen/datagen/job_funcs.py index a3911d16c..a8a618b41 100644 --- a/worldgen/tools/job_funcs.py +++ b/infinigen/datagen/job_funcs.py @@ -14,17 +14,13 @@ from pathlib import Path from shutil import copytree - -from tools.util.show_gpu_table import nodes_with_gpus - -from tools.util import upload_util -from tools.util.upload_util import upload_job_folder -from tools.states import get_suffix +from infinigen.datagen.util.show_gpu_table import nodes_with_gpus +from infinigen.datagen.util import upload_util +from infinigen.datagen.util.upload_util import upload_job_folder +from infinigen.datagen.states import get_suffix from . import states -BLENDER_PATH = None # set from args - @gin.configurable def get_cmd( seed, diff --git a/infinigen/datagen/manage_jobs copy.py b/infinigen/datagen/manage_jobs copy.py new file mode 100644 index 000000000..cafb59e2d --- /dev/null +++ b/infinigen/datagen/manage_jobs copy.py @@ -0,0 +1,1278 @@ +# Copyright (c) Princeton University. +# This source code is licensed under the BSD 3-Clause license found in the LICENSE file in the root directory of this source tree. + +# Authors: +# - Alex Raistrick: refactor, local rendering, video rendering +# - Lahav Lipson: stereo version, local rendering +# - Hei Law: initial version + + +import argparse +import logging +import os +import re +import random +import gin +import subprocess +import time +import sys +import time +import math +import itertools +from uuid import uuid4 +from enum import Enum +from copy import copy +from ast import literal_eval + +from functools import partial, cache +from collections import defaultdict +from datetime import datetime +from pathlib import Path +from shutil import which, rmtree, copyfile, copytree + +import pandas as pd +from tqdm import tqdm + +import numpy as np +import submitit +import wandb +from jinja2 import Environment, FileSystemLoader, select_autoescape + +from tools.util.show_gpu_table import nodes_with_gpus +from tools.util.cleanup import cleanup +from tools.util.submitit_emulator import ScheduledLocalExecutor, ImmediateLocalExecutor, LocalScheduleHandler, LocalJob + +from tools.util import upload_util +from tools.util.upload_util import upload_job_folder # for pickle not to freak out + +PARTITION_ENVVAR = 'INFINIGEN_SLURMPARTITION' # used only if enabled in config +EXCLUDE_FILE_ENVVAR = 'INFINIGEN_SLURM_EXCLUDENODES_LIST' + +class JobState: + NotQueued = "notqueued" + Queued = "queued" + Running = "running" + Succeeded = "succeeded" + Failed = "crashed" + +class SceneState: + NotDone = "notdone" + Done = "done" + Crashed = "crashed" + +JOB_OBJ_SUCCEEDED = 'MARK_AS_SUCCEEDED' +CONCLUDED_STATES = {JobState.Succeeded, JobState.Failed} + +# Will throw exception if the scene was not found. Sometimes this happens if the scene was queued very very recently +# Keys: JobID ArrayJobID User Group State Clustername Ncpus Nnodes Ntasks Reqmem PerNode Cput Walltime Mem ExitStatus +@gin.configurable +def seff(job_obj, retry_on_error=True): + scene_id = job_obj.job_id + assert scene_id.isdigit() + while True: + try: + seff_out = subprocess.check_output(f"/usr/bin/seff -d {scene_id}".split()).decode() + lines = seff_out.splitlines() + return dict(zip(lines[0].split(' ')[2:], lines[1].split(' ')[2:]))["State"] + except: + if not retry_on_error: + raise + time.sleep(1) + +def node_from_slurm_jobid(scene_id): + + if not which('sacct'): + return None + + try: + node_of_scene, *rest = subprocess.check_output(f"{which('sacct')} -j {scene_id} --format Node --noheader".split()).decode().split() + return node_of_scene + except Exception as e: + logging.warning(f'sacct threw {e}') + return None + +def get_scene_state(scene_dict, taskname, scene_folder): + + if not scene_dict.get(f'{taskname}_submitted', False): + return JobState.NotQueued + if scene_dict.get(f'{taskname}_crash_recorded', False): + return JobState.Failed + + job_obj = scene_dict[f'{taskname}_job_obj'] + + # for when both local and slurm scenes are being mixed + if isinstance(job_obj, str): + assert job_obj == JOB_OBJ_SUCCEEDED + return JobState.Succeeded + elif isinstance(job_obj, LocalJob): + res = job_obj.status() + else: + res = seff(job_obj) + + # map from submitit's scene state strings to our JobState enum + if res in {"PENDING", "REQUEUED"}: + return JobState.Queued + elif res == 'RUNNING': + return JobState.Running + elif not (scene_folder/"logs"/f"FINISH_{taskname}").exists(): + return JobState.Failed + + return JobState.Succeeded + +def seed_generator(): + seed_int = np.random.randint(np.iinfo(np.int32).max) + return hex(seed_int).removeprefix('0x') + +@gin.configurable +def get_cmd( + seed, + task, + configs, + taskname, + output_folder, + driver_script='generate.py', + input_folder=None, + process_niceness=None, +): + + if isinstance(task, list): + task = " ".join(task) + + cmd = '' + if process_niceness is not None: + cmd += f'nice -n {process_niceness} ' + cmd += f'python {driver_script} -- ' + if input_folder is not None: + cmd += '--input_folder ' + str(input_folder) + ' ' + if output_folder is not None: + cmd += '--output_folder ' + str(output_folder) + ' ' + cmd += f'--seed {seed} --task {task} --task_uniqname {taskname} ' + if len(configs) != 0: + cmd += f'-g {" ".join(configs)} ' + cmd += '-p' + + return cmd.split() + +@gin.configurable +def get_slurm_banned_nodes(config_path=None): + if config_path == f'ENVVAR_{EXCLUDE_FILE_ENVVAR}': + config_path = os.environ.get(EXCLUDE_FILE_ENVVAR) + if config_path is None: + return [] + with Path(config_path).open('r') as f: + return list(f.read().split()) + +def get_suffix(indices): + + suffix = '' + + if indices is None: + return suffix + + indices = copy(indices) + + for key in ['cam_rig', 'resample', 'frame', 'subcam']: + val = indices.get(key, 0) + suffix += '_' + (f'{val}' if key != 'frame' else f'{val:04d}') + + return suffix + +@gin.configurable +def slurm_submit_cmd( + cmd, + folder, + name, + mem_gb=None, + cpus=None, + gpus=0, + hours=1, + slurm_account=None, + slurm_exclude: list = None, + slurm_niceness=None, + **_ +): + + executor = submitit.AutoExecutor(folder=(folder / "logs")) + executor.update_parameters( + mem_gb=mem_gb, + name=name, + cpus_per_task=cpus, + timeout_min=60*hours, + ) + + if slurm_exclude is not None: + executor.update_parameters(slurm_exclude=','.join(slurm_exclude)) + + if gpus > 0: + executor.update_parameters(gpus_per_node=gpus) + if slurm_account is not None: + + if slurm_account == f'ENVVAR_{PARTITION_ENVVAR}': + slurm_account = os.environ.get(PARTITION_ENVVAR) + if slurm_account is None: + logging.warning(f'{PARTITION_ENVVAR=} was not set, using no slurm account') + + executor.update_parameters(slurm_account=slurm_account) + + slurm_additional_params = {} + + if slurm_niceness is not None: + slurm_additional_params['nice'] = slurm_niceness + + executor.update_parameters(slurm_additional_parameters=slurm_additional_params) + + while True: + try: + if callable(cmd[0]): + func, *arg = cmd + return executor.submit(func, *arg) + render_fn = submitit.helpers.CommandFunction(cmd) + return executor.submit(render_fn) + except submitit.core.utils.FailedJobError as e: + current_time_str = datetime.now().strftime("%m/%d %I:%M%p") + print(f"[{current_time_str}] Job submission failed with error:\n{e}") + time.sleep(60) + +@gin.configurable +def local_submit_cmd(cmd, folder, name, use_scheduler=False, **kwargs): + + ExecutorClass = ScheduledLocalExecutor if use_scheduler else ImmediateLocalExecutor + executor = ExecutorClass(folder=(folder / "logs")) + executor.update_parameters(name=name, **kwargs) + if callable(cmd[0]): + func, *arg = cmd + return executor.submit(func, *arg) + else: + func = submitit.helpers.CommandFunction(cmd) + return executor.submit(func) + +@gin.configurable +def queue_upload(folder, submit_cmd, name, taskname, dir_prefix_len=0, method='rclone', seed=None, **kwargs): + func = partial(upload_job_folder, dir_prefix_len=dir_prefix_len, method=method) + res = submit_cmd((func, folder, taskname), folder, name, **kwargs) + return res, None + +@gin.configurable +def queue_coarse( + folder, + submit_cmd, + name, + seed, + configs, + taskname=None, + exclude_gpus=[], + overrides=[], + input_indices=None, output_indices=None, + **kwargs +): + """ + Generating the coarse scene + """ + + input_suffix = get_suffix(input_indices) + output_suffix = get_suffix(output_indices) + + output_folder = Path(f'{folder}/coarse{output_suffix}') + + cmd = get_cmd(seed, 'coarse', configs, taskname, output_folder=output_folder) + f''' + LOG_DIR='{folder / "logs"}' + '''.split("\n") + overrides + + with (folder / "run_pipeline.sh").open('w') as f: + f.write(f"{' '.join(' '.join(cmd).split())}\n\n") + (folder / "run_pipeline.sh").chmod(0o774) + + res = submit_cmd(cmd, + folder=folder, + name=name, + gpus=0, + slurm_exclude=nodes_with_gpus(*exclude_gpus) + get_slurm_banned_nodes(), + **kwargs + ) + return res, output_folder + +@gin.configurable +def queue_populate( + submit_cmd, + folder, + name, + seed, + configs, + taskname=None, + overrides=[], + input_indices=None, output_indices=None, + **kwargs, +): + """ + Generating the fine scene + """ + + input_suffix = get_suffix(input_indices) + output_suffix = get_suffix(output_indices) + + input_folder = folder/f'coarse{input_suffix}' + output_folder = input_folder + + cmd = get_cmd(seed, 'populate', configs, taskname, + input_folder=input_folder, + output_folder=output_folder) + f''' + LOG_DIR='{folder / "logs"}' + '''.split("\n") + overrides + + with (folder / "run_pipeline.sh").open('a') as f: + f.write(f"{' '.join(' '.join(cmd).split())}\n\n") + + res = submit_cmd(cmd, + folder=folder, + name=name, + gpus=0, + slurm_exclude=get_slurm_banned_nodes(), + **kwargs + ) + return res, output_folder + +@gin.configurable +def queue_fine_terrain( + submit_cmd, + folder, + name, + seed, + configs, + gpus=0, + taskname=None, + exclude_gpus=[], + overrides=[], + input_indices=None, output_indices=None, + **kwargs +): + """ + Generating the fine scene + """ + + input_suffix = get_suffix(input_indices) + output_suffix = get_suffix(output_indices) + + output_folder = Path(f'{folder}/fine{output_suffix}') + + enable_gpu_in_terrain = "Terrain.device='cuda'" if gpus > 0 else "" + cmd = get_cmd(seed, 'fine_terrain', configs, taskname, + input_folder=f'{folder}/coarse{input_suffix}', + output_folder=output_folder) + f''' + LOG_DIR='{folder / "logs"}' + {enable_gpu_in_terrain} + '''.split("\n") + overrides + + with (folder / "run_pipeline.sh").open('a') as f: + f.write(f"{' '.join(' '.join(cmd).split())}\n\n") + + res = submit_cmd(cmd, + folder=folder, + name=name, + gpus=gpus, + slurm_exclude=nodes_with_gpus(*exclude_gpus) + get_slurm_banned_nodes(), + **kwargs + ) + return res, output_folder + +@gin.configurable +def queue_combined( + submit_cmd, + folder, + name, + seed, + configs, + taskname=None, + exclude_gpus=[], + gpus=0, + overrides=[], + include_coarse=True, + input_indices=None, output_indices=None, + **kwargs +): + + input_suffix = get_suffix(input_indices) + output_suffix = get_suffix(output_indices) + + tasks = 'populate fine_terrain' + + if include_coarse: + tasks = 'coarse ' + tasks + + output_folder = Path(f'{folder}/fine{output_suffix}') + + enable_gpu_in_terrain = "Terrain.device='cuda'" if gpus > 0 else "" + cmd = get_cmd(seed, tasks, configs, taskname, + input_folder=f'{folder}/coarse{input_suffix}' if not include_coarse else None, + output_folder=output_folder) + f''' + LOG_DIR='{folder / "logs"}' + {enable_gpu_in_terrain} + '''.split("\n") + overrides + + with (folder / "run_pipeline.sh").open('a') as f: + f.write(f"{' '.join(' '.join(cmd).split())}\n\n") + + res = submit_cmd(cmd, + folder=folder, + name=name, + gpus=gpus, + slurm_exclude=nodes_with_gpus(*exclude_gpus) + get_slurm_banned_nodes(), + **kwargs + ) + return res, output_folder + +@gin.configurable +def queue_render( + submit_cmd, + folder, + name, + seed, + render_type, + configs, + taskname=None, + overrides=[], + exclude_gpus=[], + input_indices=None, output_indices=None, + **submit_kwargs +): + + input_suffix = get_suffix(input_indices) + output_suffix = get_suffix(output_indices) + + output_folder = Path(f'{folder}/frames{output_suffix}') + + cmd = get_cmd(seed, "render", configs, taskname, + input_folder=f'{folder}/fine{input_suffix}', + output_folder=f'{output_folder}') + f''' + render.render_image_func=@{render_type}/render_image + LOG_DIR='{folder / "logs"}' + '''.split("\n") + overrides + + with (folder / "run_pipeline.sh").open('a') as f: + f.write(f"{' '.join(' '.join(cmd).split())}\n\n") + + res = submit_cmd(cmd, + folder=folder, + name=name, + slurm_exclude=nodes_with_gpus(*exclude_gpus) + get_slurm_banned_nodes(), + **submit_kwargs, + ) + return res, output_folder + +@gin.configurable +def queue_mesh_save( + submit_cmd, + folder, + name, + seed, + configs, + taskname=None, + overrides=[], + exclude_gpus=[], + input_indices=None, output_indices=None, + reuse_subcams=True, + **submit_kwargs +): + + if (output_indices['subcam'] > 0) and reuse_subcams: + return JOB_OBJ_SUCCEEDED, None + + input_suffix = get_suffix(input_indices) + output_suffix = get_suffix(output_indices) + + output_folder = Path(f'{folder}/savemesh{output_suffix}') + + output_folder.mkdir(parents=True, exist_ok=True) + + cmd = get_cmd(seed, "mesh_save", configs, taskname, + input_folder=f'{folder}/fine{input_suffix}', + output_folder=f'{folder}/savemesh{output_suffix}') + f''' + LOG_DIR='{folder / "logs"}' + '''.split("\n") + overrides + + with (folder / "run_pipeline.sh").open('a') as f: + f.write(f"{' '.join(' '.join(cmd).split())}\n\n") + + res = submit_cmd(cmd, + folder=folder, + name=name, + slurm_exclude=nodes_with_gpus(*exclude_gpus) + get_slurm_banned_nodes(), + **submit_kwargs, + ) + return res, output_folder + +@gin.configurable +def queue_opengl( + submit_cmd, + folder, + name, + seed, + configs, + taskname=None, + overrides=[], + exclude_gpus=[], + input_indices=None, output_indices=None, + reuse_subcams=True, + gt_testing=False, + **submit_kwargs +): + + if (output_indices['subcam'] > 0) and reuse_subcams: + return JOB_OBJ_SUCCEEDED, None + + output_suffix = get_suffix(output_indices) + + tmp_script = Path(folder) / "tmp" / f"opengl_{uuid4().hex}.sh" + tmp_script.parent.mkdir(exist_ok=True) + + process_mesh_path = Path("../process_mesh/build/process_mesh").resolve() + input_folder = Path(folder)/f'savemesh{output_suffix}' # OUTPUT SUFFIX IS CORRECT HERE. I know its weird. But input suffix really means 'prev tier of the pipeline + if (gt_testing): + copy_folder = Path(folder) / f"frames{output_suffix}" + output_folder = Path(folder) / f"opengl_frames{output_suffix}" + copytree(copy_folder, output_folder, dirs_exist_ok=True) + else: + output_folder = Path(folder) / f"frames{output_suffix}" + output_folder.mkdir(exist_ok=True) + + assert input_folder.exists(), input_folder + assert isinstance(overrides, list) and ("\n" not in ' '.join(overrides)) + + start_frame, end_frame = output_indices['frame'], output_indices['last_cam_frame'] + with tmp_script.open('w') as f: + f.write("set -e\n") # Necessary to detect if the script fails + for frame_idx in range(start_frame, end_frame + 1): + line = ( + f"{process_mesh_path} --width 1920 --height 1080 -in {input_folder} " + f"--frame {frame_idx} -out {output_folder}\n" + ) + line = re.sub("( \([A-Za-z0-9]+\))", "", line) + f.write(line) + f.write(f"touch {folder}/logs/FINISH_{taskname}") + + cmd = f"bash {tmp_script}".split() + + with (folder / "run_pipeline.sh").open('a') as f: + f.write(f"{' '.join(' '.join(cmd).split())}\n\n") + + res = submit_cmd( + cmd, + folder=folder, + name=name, + slurm_exclude=nodes_with_gpus(*exclude_gpus) + get_slurm_banned_nodes(), + **submit_kwargs, + ) + return res, output_folder + +def init_db_from_existing(output_folder: Path): + + # TODO in future: directly use existing_db (with some cleanup / checking). + + db_path = output_folder/'scenes_db.csv' + if not db_path.exists(): + raise ValueError(f'Recieved --use_existing but {db_path=} did not exist') + existing_db = pd.read_csv(db_path, converters={"configs": literal_eval}) + + def init_scene(seed_folder): + if not seed_folder.is_dir(): + return None + if not (seed_folder/'logs').exists(): + logging.warning(f'Skipping {seed_folder=} due to missing "logs" subdirectory') + return None + + configs = existing_db.loc[existing_db["seed"] == seed_folder.name, "configs"].iloc[0] + + scene_dict = { + 'seed': seed_folder.name, + 'all_done': SceneState.NotDone, + 'configs': list(configs) + } + + finish_key = 'FINISH_' + for finish_file_name in (seed_folder/'logs').glob(finish_key + '*'): + taskname = os.path.basename(finish_file_name)[len(finish_key):] + logging.info(f'Marking {seed_folder.name=} {taskname=} as completed') + scene_dict[f'{taskname}_submitted'] = True + scene_dict[f'{taskname}_job_obj'] = JOB_OBJ_SUCCEEDED + + return scene_dict + + return [init_scene(seed_folder) for seed_folder in output_folder.iterdir()] + +@gin.configurable +def sample_scene_spec(i, seed_range=None, config_distribution=None, config_sample_mode='random'): + + if seed_range is None: + seed = seed_generator() + else: + start, end = seed_range + if i > end - start: + return None + seed = hex(start + i).removeprefix('0x') + + if config_distribution is None: + configs = [] + elif config_sample_mode == 'random': + configs_options, weights = zip(*config_distribution) # list of rows to list per column + ps = np.array(weights) / sum(weights) + configs = np.random.choice(configs_options, p=ps) + elif config_sample_mode == 'roundrobin': + configs_options, weights = zip(*config_distribution) # list of rows to list per column + if not all(isinstance(w, int) for w in weights): + raise ValueError(f'{config_sample_mode=} expects integer scene counts as weights but got {weights=} with non-integer values') + idx = np.argmin(i % sum(weights) + 1 > np.cumsum(weights)) + configs = configs_options[idx] + else: + raise ValueError(f'Unrecognized {config_sample_mode=}') + + if isinstance(configs, str) and " " in configs: + configs = configs.split(" ") + if not isinstance(configs, list): + configs = [configs] + + return { + "all_done": SceneState.NotDone, + "seed": seed, + 'configs': configs + } + +@gin.configurable +def init_db(args): + + if args.use_existing: + scenes = init_db_from_existing(args.output_folder) + elif args.specific_seed is not None: + scenes = [{"seed": s, "all_done": SceneState.NotDone} for s in args.specific_seed] + else: + scenes = [sample_scene_spec(i) for i in range(args.num_scenes)] + + scenes = [s for s in scenes if s is not None] + + if len(scenes) < args.num_scenes: + logging.warning(f'Initialized only {len(scenes)=} despite {args.num_scenes=}. Likely due to --use_existing, --specific_seed or seed_range.') + + return scenes + +def update_symlink(scene_folder, scenes): + for new_name, scene in scenes: + + if scene == JOB_OBJ_SUCCEEDED: + continue + elif isinstance(scene, str): + raise ValueError(f'Failed due to {scene=}') + + to = scene_folder / "logs" / f"{new_name}.out" + + std_out = scene_folder / "logs" / f"{scene.job_id}_0_log.out" + + if os.path.islink(to): + os.unlink(to) + os.unlink(scene_folder / "logs" / f"{new_name}.err") + os.symlink(std_out.resolve(), to) + os.symlink(std_out.with_suffix('.err').resolve(), scene_folder / "logs" / f"{new_name}.err") + +def get_disk_usage(folder): + out = subprocess.check_output(f"df -h {folder.resolve()}".replace(" (Princeton)", "").split()).decode() + return int(re.compile("[\s\S]* ([0-9]+)% [\s\S]*").fullmatch(out).group(1)) / 100 + +def make_html_page(output_path, scenes, frame, camera_pair_id, **kwargs): + env = Environment( + loader=FileSystemLoader("tools"), + autoescape=select_autoescape(), + ) + + template = env.get_template("template.html") + seeds = [scene['seed'] for scene in scenes] + html = template.render( + seeds=seeds, + **kwargs, + frame=frame, + camera_pair_id=camera_pair_id, + ) + + with output_path.open('a') as f: + f.write(html) + +@gin.configurable +def run_task( + queue_func, + scene_folder, + scene_dict, + taskname, + dryrun=False +): + + assert scene_folder.parent.exists(), scene_folder + scene_folder.mkdir(exist_ok=True) + stage_scene_name = f"{scene_folder.parent.stem}_{scene_folder.stem}_{taskname}" + assert not scene_dict.get(f'{taskname}_submitted', False) + + if dryrun: + scene_dict[f'{taskname}_job_obj'] = JOB_OBJ_SUCCEEDED + scene_dict[f'{taskname}_submitted'] = 1 + return + + seed = scene_dict['seed'] + + job_obj, output_folder = queue_func( + folder=scene_folder, + name=stage_scene_name, + seed=seed, + taskname=taskname + ) + scene_dict[f'{taskname}_job_obj'] = job_obj + scene_dict[f'{taskname}_output_folder'] = output_folder + scene_dict[f'{taskname}_submitted'] = 1 # marked as submitted + update_symlink(scene_folder, [(taskname, job_obj)]) + +def check_and_perform_cleanup(args, seed, crashed): + scene_folder = args.output_folder/seed + if args.cleanup == 'all' or (args.cleanup == 'except_crashed' and not crashed): + logging.info(f"{seed} - Removing entirety of {scene_folder}") + rmtree(scene_folder) + elif args.cleanup == 'big_files' or (args.cleanup == 'except_crashed' and crashed): + logging.info(f"{seed} - Cleaning up any large files") + cleanup(scene_folder, verbose=False) + + if args.remove_write: + subprocess.check_output(f"chmod -R a-w {scene_folder}".split()) + +def iterate_sequential_tasks(task_list, get_task_state, overrides, configs, input_indices=None, output_indices=None): + + if len(task_list) == 0: + return JobState.Succeeded + + prev_state = JobState.Succeeded + assert task_list[0].get('condition', 'prev_succeeded') == 'prev_succeeded' + + for i, task_spec in enumerate(task_list): + + # check that we should actually run this step, according to its condition + cond = task_spec.get('condition', 'prev_succeeded') + if cond == 'prev_succeeded' and prev_state != JobState.Succeeded: + return + elif cond == 'prev_failed' and prev_state != JobState.Failed: + continue # we wont run this scene, but skipping doesnt count as crashing + elif cond == 'prev_redundant': + pass # any outcome is fine + + # determine whether the current step failing would be catastrophic + fatal = ( + i + 1 >= len(task_list) or + task_list[i + 1].get('condition', 'prev_succeeded') != 'prev_failed' + ) + + queue_func = partial(task_spec['func'], overrides=overrides, configs=configs, + input_indices=input_indices, output_indices=output_indices) + + taskname = task_spec['name'] + get_suffix(output_indices) + state = get_task_state(taskname=taskname) + yield state, taskname, queue_func, fatal + + prev_state = state + +@gin.configurable +def iterate_scene_tasks( + scene_dict, args, + monitor_all, # if True, enumerate scenes that we might have launched earlier, even if we wouldnt launch them now (due to crashes etc) + + # provided by gin + global_tasks, view_dependent_tasks, camera_dependent_tasks, + frame_range, cam_id_ranges, num_resamples=1, render_frame_range=None, + view_block_size=1, # how many frames should share each `view_dependent_task` + cam_block_size=None, # how many frames should share each `camera_dependent_task` + cleanup_viewdep=False, # cleanup the results of `view_dependent_tasks` once each view iter is done? + viewdep_paralell=True, # can we work on multiple view depenendent tasks (usually `fine`) in paralell? + camdep_paralell=True # can we work on multiple camera dependent tasks (usually render/gt) in paralell? +): + + ''' + This function is a generator which yields all scenes we might want to consider monitoring or running for a particular scene + + It `yield`s the available scenes, regardless of whether they are already running etc + ''' + + for task in global_tasks + view_dependent_tasks + camera_dependent_tasks: + if '_' in task['name']: + raise ValueError(f'{task=} with {task["name"]=} is invalid, must not contain underscores') + + if cam_block_size is None: + cam_block_size = view_block_size + + if cam_id_ranges[0] <= 0 or cam_id_ranges[1] <= 0: + raise ValueError(f'{cam_id_ranges=} is invalid, both num. rigs and num subcams must be >= 1 or no work is done') + assert view_block_size >= 1 + assert cam_block_size >= 1 + if cam_block_size > view_block_size: + cam_block_size = view_block_size + seed = scene_dict['seed'] + + scene_folder = args.output_folder/seed + get_task_state = partial(get_scene_state, scene_dict=scene_dict, scene_folder=scene_folder) + + global_overrides = [ + f'execute_tasks.frame_range={repr(list(frame_range))}', + f'execute_tasks.camera_id=[0, 0]' + ] + global_configs = scene_dict.get('configs', []) + args.configs + global_iter = iterate_sequential_tasks( + global_tasks, + get_task_state, + overrides=args.overrides+global_overrides, + configs=global_configs + ) + + for state, *rest in global_iter: + yield state, *rest + if not state == JobState.Succeeded: + return + + view_range = render_frame_range if render_frame_range is not None else frame_range + view_frames = range(view_range[0], view_range[1] + 1, view_block_size) # blender frame_range is inclusive, but python's range is end-exclusive + resamples = range(num_resamples) + cam_rigs = range(cam_id_ranges[0]) + subcams = range(cam_id_ranges[1]) + + running_views = 0 + for cam_rig, view_frame in itertools.product(cam_rigs, view_frames): + + view_frame_range = [view_frame, min(frame_range[1], view_frame + view_block_size - 1)] # blender frame_end is INCLUSIVE + view_overrides = [ + f'execute_tasks.frame_range=[{view_frame_range[0]},{view_frame_range[1]}]', + f'execute_tasks.camera_id=[{cam_rig},{0}]' + ] + + view_idxs = dict(cam_rig=cam_rig, frame=view_frame) + view_tasks_iter = iterate_sequential_tasks( + view_dependent_tasks, get_task_state, + overrides=args.overrides+view_overrides, + configs=global_configs, output_indices=view_idxs + ) + for state, *rest in view_tasks_iter: + yield state, *rest + if state not in CONCLUDED_STATES: + if viewdep_paralell: + running_views += 1 + continue + else: + return + elif state == JobState.Failed and not monitor_all: + return + + running_blocks = 0 + for subcam, resample_idx in itertools.product(subcams, resamples): + for cam_frame in range(view_frame_range[0], view_frame_range[1] + 1, cam_block_size): + + cam_frame_range = [cam_frame, min(view_frame_range[1], cam_frame + cam_block_size - 1)] # blender frame_end is INCLUSIVE + cam_overrides = [ + f'execute_tasks.frame_range=[{cam_frame_range[0]},{cam_frame_range[1]}]', + f'execute_tasks.camera_id=[{cam_rig},{subcam}]', + f'execute_tasks.resample_idx={resample_idx}' + ] + + camdep_indices = dict( + cam_rig=cam_rig, + frame=cam_frame, + subcam=subcam, + resample=resample_idx, + view_first_frame=view_frame_range[0], + last_view_frame=view_frame_range[1], + last_cam_frame=cam_frame_range[1] # this line explicitly used by most jobs + ) + camera_dep_iter = iterate_sequential_tasks( + camera_dependent_tasks, + get_task_state, + overrides=args.overrides+cam_overrides, + configs=global_configs, + input_indices=view_idxs if len(view_dependent_tasks) else None, + output_indices=camdep_indices + ) + for state, *rest in camera_dep_iter: + yield state, *rest + if state not in CONCLUDED_STATES: + if camdep_paralell: + running_blocks += 1 + continue + else: + return + elif state == JobState.Failed and not monitor_all: + return + + if running_blocks > 0: + running_views += 1 + continue + + key = f'viewdep_{cam_rig}_{view_frame}_cleaned' + if cleanup_viewdep and args.cleanup != 'none' and not scene_dict.get(key, False): + for stage_rec in view_dependent_tasks: + taskname = stage_rec['name'] + path = scene_dict[f'{taskname}_output_folder'] + print(f'Cleaning {path} for {taskname}') + if path == scene_folder: + continue + if path is not None and path.exists(): + cleanup(path) + scene_dict[key] = True + + if running_views > 0: + return + + # Upload + if args.upload: + state = get_task_state(taskname='upload') + yield state, 'upload', queue_upload, True + if state != JobState.Succeeded: + return + + if scene_dict['all_done'] != SceneState.NotDone: + return + + # Cleanup + with (args.output_folder / "finished_seeds.txt").open('a') as f: + f.write(f"{seed}\n") + scene_dict['all_done'] = SceneState.Done + check_and_perform_cleanup(args, seed, crashed=False) + +def infer_crash_reason(stdout_file, stderr_file: Path): + + if not stderr_file.exists(): + return f'{stderr_file} not found' + + try: + error_log = stderr_file.read_text() + except UnicodeDecodeError: + return f"failed to parse log file {stderr_file}" + + if "System is out of GPU memory" in error_log: + return "Out of GPU memory" + elif "this scene is timed-out" in error_log or 'DUE TO TIME LIMIT' in error_log: + return "Timed out" + elif "" in error_log: + return "SIGKILL: 9 (out-of-memory, probably)" + elif "SIGCONT" in error_log: + return "SIGCONT (timeout?)" + elif "srun: error" in error_log: + return "srun error" + + if not stdout_file.exists(): + return f'{stdout_file} not found' + if not stderr_file.exists(): + return f'{stderr_file} not found' + + output_text = f"{stdout_file.read_text()}\n{stderr_file.read_text()}\n" + matches = re.findall("(Error:[^\n]+)\n", output_text) + + ignore_errors = [ + 'Error: Not freed memory blocks', + ] + + matches = [m for m in matches if not any(w in m for w in ignore_errors)] + + if len(matches): + return ','.join(matches) + else: + return f"Could not summarize cause, check {stderr_file}" + +def record_crashed_seed(crashed_seed, crash_stage, f, fatal=True): + time_str = datetime.now().strftime("%m/%d %I:%M%p") + stdout_file = args.output_folder / crashed_seed / "logs" / f"{crash_stage}.out" + stderr_file = args.output_folder / crashed_seed / "logs" / f"{crash_stage}.err" + + scene_id, *_ = stderr_file.resolve().stem.split('_') + node_of_scene = node_from_slurm_jobid(scene_id) + + reason = infer_crash_reason(stdout_file, stderr_file) + text = f"{crashed_seed} {crash_stage} {scene_id} {node_of_scene} {reason} {fatal=} {time_str}\n" + print('Crashed: ' + text) + f.write(text) + + return reason + +def write_html_summary(all_scenes, output_folder, max_size=5000): + + names = [("index" if (idx == 0) else f"index_{idx}") for idx in range(0, len(all_scenes), max_size)] + for name, idx in zip(names, range(0, len(all_scenes), max_size)): + html_path = output_folder / f"{name}.html" + if not html_path.exists(): + make_html_page(html_path, all_scenes[idx:idx+max_size], frame=100, + camera_pair_id=0, samples=[f"resmpl{i}" for i in range(5)], pages=names, + ) + +def stats_summary(stats): + stats = {k: v for k, v in stats.items() if not k.startswith(JobState.NotQueued)} + lemmatized = set(l.split('_')[0] for l in stats.keys()) + stats = {l: sum(v for k, v in stats.items() if k.startswith(l)) for l in lemmatized} + + uniq_keys = set(k.split('/')[0] for k in stats.keys()) + totals = {p: sum(v for k, v in stats.items() if k.startswith(p)) for p in uniq_keys} + + for k, v in totals.items(): + stats[f'{k}/total'] = v + + return stats, totals + +def monitor_existing_jobs(all_scenes): + + stats = defaultdict(int) + + for scene in all_scenes: + + scene['num_running'], scene['num_done'] = 0, 0 + any_fatal = False + for state, taskname, _, fatal in iterate_scene_tasks(scene, args, monitor_all=True): + + if state == JobState.NotQueued: + continue + + stats[f'{state}/{taskname}'] += 1 + scene['num_done'] += state in CONCLUDED_STATES + scene['num_running'] += state not in CONCLUDED_STATES + + if state == JobState.Failed: + if not scene.get(f'{taskname}_crash_recorded', False): + scene[f'{taskname}_crash_recorded'] = True + with (args.output_folder / "crash_summaries.txt").open('a') as f: + record_crashed_seed(scene['seed'], taskname, f, fatal=fatal) + if fatal: + any_fatal = True + + if any_fatal: + scene['any_fatal_crash'] = True + + if scene['num_running'] == 0 and any_fatal and scene['all_done'] == SceneState.NotDone: + scene['all_done'] = SceneState.Crashed + with (args.output_folder / "crash_summaries.txt").open('a') as f: + check_and_perform_cleanup(args, scene['seed'], crashed=True) + + return stats + +def jobs_to_launch_next(all_scenes, greedy=True): + scenes = [j for j in all_scenes if (j["all_done"] == SceneState.NotDone)] + if greedy: + scenes = sorted(scenes, key=lambda s: s['num_running'] + s['num_done'], reverse=True) + for scene in scenes: + if scene.get('any_fatal_crash', False): + continue + for state, taskname, queue_func, _ in iterate_scene_tasks(scene, args, monitor_all=False): + if state != JobState.NotQueued: + continue + yield scene, taskname, queue_func + +@gin.configurable +def manage_datagen_jobs(all_scenes, elapsed, num_concurrent, disk_sleep_threshold=0.95): + + if LocalScheduleHandler._inst is not None: + LocalScheduleHandler.instance().poll() + + warmup_pct = min(elapsed / args.warmup_sec, 1) if args.warmup_sec > 0 else 1 + curr_concurrent_max = math.ceil(warmup_pct * num_concurrent) + + # Check results / current state of scenes we have already launched + stats = monitor_existing_jobs(all_scenes) + stats, totals = stats_summary(stats) + + n_in_flight = totals.get(JobState.Running, 0) + totals.get(JobState.Queued, 0) + if n_in_flight > curr_concurrent_max: + raise ValueError(f'manage_datagen_jobs observed {n_in_flight=}, which exceeds allowed {curr_concurrent_max=}') + n_to_launch = max(curr_concurrent_max - n_in_flight, 0) + + pd.DataFrame.from_records(all_scenes).to_csv(args.output_folder/'scenes_db.csv') + + stats['n_in_flight'] = n_in_flight + stats['n_launching'] = n_to_launch + stats['disk_usage'] = get_disk_usage(args.output_folder) + stats['concurrent_max'] = curr_concurrent_max + wandb.log(stats) + print("=" * 60) + for k,v in sorted(stats.items()): + print(f"{k.ljust(30)} : {v}") + print("-" * 60) + + # Dont launch new scenes if disk is getting full + if stats['disk_usage'] > disk_sleep_threshold: + print(f"{args.output_folder} is too full ({get_disk_usage(args.output_folder)}%). Sleeping.") + wandb.alert(title='Disk full', text=f'Sleeping due to full disk at {args.output_folder=}', wait_duration=3*60*60) + time.sleep(60) + return + + # Launch to get back to intended n=`curr_concurrent_max` that should be in flight + for spec in itertools.islice(jobs_to_launch_next(all_scenes), n_to_launch): + scene, taskname, queue_func = spec + logging.info(f"{scene['seed']} - running {taskname}") + run_task(queue_func, args.output_folder / str(scene['seed']), scene, taskname) + +@gin.configurable +def main(args, shuffle=True, wandb_project='render_beta'): + + os.umask(0o007) + + all_scenes = init_db(args) + scene_name = args.output_folder.parts[-1] + + write_html_summary(all_scenes, args.output_folder) if args.cleanup != 'all' else None + wandb.init(name=scene_name, config=vars(args), project=wandb_project, mode=args.wandb_mode) + + logging.basicConfig( + #filename=str(args.output_folder / "jobs.log"), + level=args.loglevel, + format='[%(asctime)s]: %(message)s', + ) + + start_time = datetime.now() + + scenes = [j for j in all_scenes if j['all_done'] == SceneState.NotDone] + if shuffle: + np.random.shuffle(scenes) + else: + scenes = sorted(scenes, key=lambda j: j['seed']) + while any(j['all_done'] == SceneState.NotDone for j in all_scenes): + now = datetime.now() + print(f'{args.output_folder} {start_time.strftime("%m/%d %I:%M%p")} -> {now.strftime("%m/%d %I:%M%p")}') + manage_datagen_jobs(scenes, elapsed=(now-start_time).total_seconds()) + time.sleep(4) + + +def set_blender_path_global(args): + + global BLENDER_PATH + if args.blender_path is None: + if 'BLENDER' in os.environ: + BLENDER_PATH = os.environ['BLENDER'] + else: + BLENDER_PATH = '../blender/blender' # assuming we run from infinigen/worldgen + else: + BLENDER_PATH = args.blender_path + if not os.path.exists(BLENDER_PATH): + raise ValueError(f'Couldnt not find {BLENDER_PATH=}, make sure --blender_path or $BLENDER is specified') + +if __name__ == "__main__": + assert Path('.').resolve().parts[-1] == 'worldgen' + + slurm_available = (which("sbatch") is not None) + parser = argparse.ArgumentParser() # to guarantee that the render scenes finish, try render_image.time_limit=2000 + parser.add_argument( + '-o', + '--output_folder', + type=Path, + required=True + ) + parser.add_argument( + '--blender_path', + type=str, + default=None, + help="Full path to a `blender` executable with all dependencies installed. If set to None, the system will use the $BLENDER environment variable" + ) + parser.add_argument( + '--num_scenes', + type=int, + default=1, + help="Number of scenes to attempt before terminating" + ) + parser.add_argument( + '--meta_seed', + type=int, + default=None, + help="What seed should be used to determine the random seeds of each scene? Leave as None unless deliberately replicat" + ) + parser.add_argument( + '--specific_seed', + default=None, + nargs='+', + help="The default, None, will choose a random seed per scene. Otherwise, all scenes will have the specified seed. Interpreted as an integer if possible." + ) + parser.add_argument( + '--use_existing', + action='store_true', + help="If set, then assume output_folder is an existing folder from a terminated run, and make a best-possible-effort to resume from where it left off" + ) + parser.add_argument( + '--warmup_sec', + type=float, + default=0, + help="Perform a staggered start over the specified period, so that jobs dont sync up or all write to disk at similar times." + ) + parser.add_argument( + '--cleanup', + type=str, + choices=['all', 'big_files', 'none', 'except_crashed'], + default='none', + help="What files should be cleaned up by the manager as it runs?" + ) + parser.add_argument( + '--remove_write', + action='store_true', + help="If set, remove Unix write permissions from the generated files, to prevent a user accidentally deleting data." + ) + parser.add_argument( + '--upload', + action='store_true', + help="If set, attempt to upload scenes as tarballs to GDrive of SMB depending on configs. See `upload_util.py` for more details before using." + ) + parser.add_argument( + '--configs', + nargs='*', + default=[], + help="List of gin config names to pass through to all underlying scene generation jobs." + ) + parser.add_argument( + '-p', + '--overrides', + nargs='+', + type=str, + default=[], + help="List of gin overrides to pass through to all underlying scene generation jobs" + ) + parser.add_argument( + '--wandb_mode', + type=str, + default='disabled', + choices=['online', 'offline', 'disabled'], + help="Mode kwarg for wandb.init(). Set up wandb before use." + ) + parser.add_argument( + '--pipeline_configs', + type=str, + nargs='+', + help="List of gin config names from tools/pipeline_configs to configure this execution" + ) + parser.add_argument( + '--pipeline_overrides', + nargs='+', + type=str, + default=[], + help="List of gin overrides to configure this execution", + ) + parser.add_argument('--overwrite', action='store_true') + parser.add_argument('-d', '--debug', action="store_const", dest="loglevel", const=logging.DEBUG, default=logging.INFO) + parser.add_argument( '-v', '--verbose', action="store_const", dest="loglevel", const=logging.INFO) + args = parser.parse_args() + + if not args.upload and args.cleanup == 'all': + raise ValueError(f'Pipeline is configured with {args.cleanup=} yet {args.upload=}! No output would be preserved!') + if args.upload and args.cleanup == 'none': + raise ValueError(f'--upload currently applies --cleanup big_files') + assert args.specific_seed is None or args.num_scenes == 1 + set_blender_path_global(args) + + overwrite_ok = args.use_existing or args.overwrite + if args.output_folder.exists() and not overwrite_ok: + raise FileExistsError(f'--output_folder {args.output_folder} already exists! Please delete it, specify a different --output_folder, or use --overwrite') + args.output_folder.mkdir(parents=True, exist_ok=overwrite_ok) + + if args.meta_seed is not None: + random.seed(args.meta_seed) + np.random.seed(args.meta_seed) + + def find_config(g): + for p in Path('infinigen/datagen/configs').glob('**/*.gin'): + if p.parts[-1] == g: + return p + if p.parts[-1] == f'{g}.gin': + return p + raise ValueError(f'Couldn not locate {g} or {g}.gin in anywhere pipeline_configs/**') + configs = [find_config(n) for n in ['base.gin'] + args.pipeline_configs] + for c in configs: + assert os.path.exists(c), c + bindings = args.pipeline_overrides + gin.parse_config_files_and_bindings(configs, bindings=bindings) + + main(args) diff --git a/worldgen/tools/manage_datagen_jobs.py b/infinigen/datagen/manage_jobs.py similarity index 97% rename from worldgen/tools/manage_datagen_jobs.py rename to infinigen/datagen/manage_jobs.py index f6c8d3c31..c18acb4e5 100644 --- a/worldgen/tools/manage_datagen_jobs.py +++ b/infinigen/datagen/manage_jobs.py @@ -45,14 +45,14 @@ JOB_OBJ_SUCCEEDED, cancel_job ) -from tools.util.submitit_emulator import ( +from infinigen.datagen.util.submitit_emulator import ( ScheduledLocalExecutor, ImmediateLocalExecutor, LocalScheduleHandler ) -from . import job_funcs -from .job_funcs import ( +from infinigen.datagen import job_funcs +from infinigen.datagen.job_funcs import ( # referenced by name via gin configs queue_coarse, queue_combined, @@ -644,26 +644,6 @@ def main(args, shuffle=True, wandb_project='render', upload_commandfile_method=N manage_datagen_jobs(all_scenes, elapsed=(now-start_time).total_seconds()) time.sleep(2) - -def set_blender_path_global(args): - - - if args.blender_path is None: - if 'BLENDER' in os.environ: - blender_path = os.environ['BLENDER'] - else: - blender_path = '../blender/blender' # assuming we run from infinigen/worldgen - else: - blender_path = args.blender_path - - if not os.path.exists(blender_path): - raise ValueError( - f'Couldnt not find {blender_path=}, make sure' - ' --blender_path or $BLENDER is specified' - ) - - job_funcs.BLENDER_PATH = blender_path - if __name__ == "__main__": assert Path('.').resolve().parts[-1] == 'worldgen' @@ -798,7 +778,7 @@ def set_blender_path_global(args): np.random.seed(args.meta_seed) def find_config(g): - for p in Path('tools/pipeline_configs').glob('**/*.gin'): + for p in Path('infinigen/datagen/configs').glob('**/*.gin'): if p.parts[-1] == g: return p if p.parts[-1] == f'{g}.gin': diff --git a/worldgen/tools/monitor_tasks.py b/infinigen/datagen/monitor_tasks.py similarity index 98% rename from worldgen/tools/monitor_tasks.py rename to infinigen/datagen/monitor_tasks.py index 6cfbe01d6..0342ed22a 100644 --- a/worldgen/tools/monitor_tasks.py +++ b/infinigen/datagen/monitor_tasks.py @@ -14,9 +14,9 @@ import gin -from tools.util.cleanup import cleanup -from tools.util import upload_util -from tools.states import ( +from infinigen.datagen.util.cleanup import cleanup +from infinigen.datagen.util import upload_util +from infinigen.datagen.states import ( JobState, SceneState, CONCLUDED_JOBSTATES, diff --git a/worldgen/tools/states.py b/infinigen/datagen/states.py similarity index 98% rename from worldgen/tools/states.py rename to infinigen/datagen/states.py index 6a53e8d3c..341913aa9 100644 --- a/worldgen/tools/states.py +++ b/infinigen/datagen/states.py @@ -14,7 +14,7 @@ import gin import submitit -from tools.util.submitit_emulator import LocalJob +from infinigen.datagen.util.submitit_emulator import LocalJob class JobState: NotQueued = "notqueued" diff --git a/infinigen/datagen/tools/__init__.py b/infinigen/datagen/tools/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/worldgen/tools/blendscript_import_infinigen.py b/infinigen/datagen/tools/blendscript_import_infinigen.py similarity index 100% rename from worldgen/tools/blendscript_import_infinigen.py rename to infinigen/datagen/tools/blendscript_import_infinigen.py diff --git a/worldgen/tools/datarelease_toolkit.py b/infinigen/datagen/tools/datarelease_toolkit.py similarity index 100% rename from worldgen/tools/datarelease_toolkit.py rename to infinigen/datagen/tools/datarelease_toolkit.py diff --git a/worldgen/tools/dev/generate_terrain_assets.py b/infinigen/datagen/tools/dev/generate_terrain_assets.py similarity index 100% rename from worldgen/tools/dev/generate_terrain_assets.py rename to infinigen/datagen/tools/dev/generate_terrain_assets.py diff --git a/worldgen/tools/dev/landtile_viewer.py b/infinigen/datagen/tools/dev/landtile_viewer.py similarity index 100% rename from worldgen/tools/dev/landtile_viewer.py rename to infinigen/datagen/tools/dev/landtile_viewer.py diff --git a/worldgen/tools/dev/palette/.gitignore b/infinigen/datagen/tools/dev/palette/.gitignore similarity index 100% rename from worldgen/tools/dev/palette/.gitignore rename to infinigen/datagen/tools/dev/palette/.gitignore diff --git a/worldgen/tools/dev/palette/demo1.png b/infinigen/datagen/tools/dev/palette/demo1.png similarity index 100% rename from worldgen/tools/dev/palette/demo1.png rename to infinigen/datagen/tools/dev/palette/demo1.png diff --git a/worldgen/tools/dev/palette/demo2.png b/infinigen/datagen/tools/dev/palette/demo2.png similarity index 100% rename from worldgen/tools/dev/palette/demo2.png rename to infinigen/datagen/tools/dev/palette/demo2.png diff --git a/worldgen/tools/dev/palette/demo3.png b/infinigen/datagen/tools/dev/palette/demo3.png similarity index 100% rename from worldgen/tools/dev/palette/demo3.png rename to infinigen/datagen/tools/dev/palette/demo3.png diff --git a/worldgen/tools/dev/palette/demo4.png b/infinigen/datagen/tools/dev/palette/demo4.png similarity index 100% rename from worldgen/tools/dev/palette/demo4.png rename to infinigen/datagen/tools/dev/palette/demo4.png diff --git a/worldgen/tools/dev/palette/palette.py b/infinigen/datagen/tools/dev/palette/palette.py similarity index 100% rename from worldgen/tools/dev/palette/palette.py rename to infinigen/datagen/tools/dev/palette/palette.py diff --git a/worldgen/tools/dev/palette/readme.md b/infinigen/datagen/tools/dev/palette/readme.md similarity index 100% rename from worldgen/tools/dev/palette/readme.md rename to infinigen/datagen/tools/dev/palette/readme.md diff --git a/worldgen/tools/dev/params_parser.py b/infinigen/datagen/tools/dev/params_parser.py similarity index 100% rename from worldgen/tools/dev/params_parser.py rename to infinigen/datagen/tools/dev/params_parser.py diff --git a/worldgen/tools/export/README.md b/infinigen/datagen/tools/export/README.md similarity index 100% rename from worldgen/tools/export/README.md rename to infinigen/datagen/tools/export/README.md diff --git a/infinigen/datagen/tools/export/__init__.py b/infinigen/datagen/tools/export/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/worldgen/tools/export/export.py b/infinigen/datagen/tools/export/export.py similarity index 100% rename from worldgen/tools/export/export.py rename to infinigen/datagen/tools/export/export.py diff --git a/worldgen/tools/export/install.sh b/infinigen/datagen/tools/export/install.sh similarity index 100% rename from worldgen/tools/export/install.sh rename to infinigen/datagen/tools/export/install.sh diff --git a/worldgen/tools/ground_truth/bounding_boxes_3d.py b/infinigen/datagen/tools/ground_truth/bounding_boxes_3d.py similarity index 100% rename from worldgen/tools/ground_truth/bounding_boxes_3d.py rename to infinigen/datagen/tools/ground_truth/bounding_boxes_3d.py diff --git a/worldgen/tools/ground_truth/depth_to_normals.py b/infinigen/datagen/tools/ground_truth/depth_to_normals.py similarity index 100% rename from worldgen/tools/ground_truth/depth_to_normals.py rename to infinigen/datagen/tools/ground_truth/depth_to_normals.py diff --git a/worldgen/tools/ground_truth/optical_flow_warp.py b/infinigen/datagen/tools/ground_truth/optical_flow_warp.py similarity index 100% rename from worldgen/tools/ground_truth/optical_flow_warp.py rename to infinigen/datagen/tools/ground_truth/optical_flow_warp.py diff --git a/worldgen/tools/ground_truth/rigid_warp.py b/infinigen/datagen/tools/ground_truth/rigid_warp.py similarity index 100% rename from worldgen/tools/ground_truth/rigid_warp.py rename to infinigen/datagen/tools/ground_truth/rigid_warp.py diff --git a/worldgen/tools/ground_truth/segmentation_lookup.py b/infinigen/datagen/tools/ground_truth/segmentation_lookup.py similarity index 100% rename from worldgen/tools/ground_truth/segmentation_lookup.py rename to infinigen/datagen/tools/ground_truth/segmentation_lookup.py diff --git a/infinigen/datagen/tools/results/__init__.py b/infinigen/datagen/tools/results/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/worldgen/tools/results/aggregate_job_stats.py b/infinigen/datagen/tools/results/aggregate_job_stats.py similarity index 100% rename from worldgen/tools/results/aggregate_job_stats.py rename to infinigen/datagen/tools/results/aggregate_job_stats.py diff --git a/worldgen/tools/results/job_stats.py b/infinigen/datagen/tools/results/job_stats.py similarity index 100% rename from worldgen/tools/results/job_stats.py rename to infinigen/datagen/tools/results/job_stats.py diff --git a/worldgen/tools/results/make_grid_figure.py b/infinigen/datagen/tools/results/make_grid_figure.py similarity index 100% rename from worldgen/tools/results/make_grid_figure.py rename to infinigen/datagen/tools/results/make_grid_figure.py diff --git a/worldgen/tools/results/parse_times.py b/infinigen/datagen/tools/results/parse_times.py similarity index 100% rename from worldgen/tools/results/parse_times.py rename to infinigen/datagen/tools/results/parse_times.py diff --git a/worldgen/tools/results/parse_videos.py b/infinigen/datagen/tools/results/parse_videos.py similarity index 100% rename from worldgen/tools/results/parse_videos.py rename to infinigen/datagen/tools/results/parse_videos.py diff --git a/worldgen/tools/results/resource_stats.py b/infinigen/datagen/tools/results/resource_stats.py similarity index 100% rename from worldgen/tools/results/resource_stats.py rename to infinigen/datagen/tools/results/resource_stats.py diff --git a/worldgen/tools/results/scatter_figure.py b/infinigen/datagen/tools/results/scatter_figure.py similarity index 100% rename from worldgen/tools/results/scatter_figure.py rename to infinigen/datagen/tools/results/scatter_figure.py diff --git a/worldgen/tools/results/strip_alpha_background.py b/infinigen/datagen/tools/results/strip_alpha_background.py similarity index 100% rename from worldgen/tools/results/strip_alpha_background.py rename to infinigen/datagen/tools/results/strip_alpha_background.py diff --git a/worldgen/tools/results/summarize.py b/infinigen/datagen/tools/results/summarize.py similarity index 100% rename from worldgen/tools/results/summarize.py rename to infinigen/datagen/tools/results/summarize.py diff --git a/infinigen/datagen/tools/scripts/render_river_video.sh b/infinigen/datagen/tools/scripts/render_river_video.sh new file mode 100644 index 000000000..ad627d111 --- /dev/null +++ b/infinigen/datagen/tools/scripts/render_river_video.sh @@ -0,0 +1,11 @@ +# TEMP. REMOVE BEFORE MERGE. + +HOSTFIRST=$(hostname | tr "." "\n" | head -n 1) +JOBNAME=$(date '+%m_%d_%H_%M').$HOSTFIRST.$1 +if [ "$2" = "dev" ]; then + python -m infinigen.datagen.manage_jobs --output_folder $3/$JOBNAME --num_scenes 20 \ + --pipeline_config $1 monocular_video_river enable_gpu opengl_gt --wandb_mode online --cleanup none --warmup_sec 12000 --config trailer_river dev reuse_terrain_assets simulated_river +else + python -m infinigen.datagen.manage_jobs --output_folder $3/$JOBNAME --num_scenes 50 \ + --pipeline_config $1 monocular_video_river enable_gpu opengl_gt --wandb_mode online --cleanup big_files --warmup_sec 12000 --config trailer_river reuse_terrain_assets simulated_river high_quality_terrain +fi diff --git a/infinigen/datagen/tools/scripts/render_video_1080p.sh b/infinigen/datagen/tools/scripts/render_video_1080p.sh new file mode 100644 index 000000000..83e89ec01 --- /dev/null +++ b/infinigen/datagen/tools/scripts/render_video_1080p.sh @@ -0,0 +1,8 @@ +HOSTFIRST=$(hostname | tr "." "\n" | head -n 1) +JOBNAME=$(date '+%m_%d_%H_%M').$HOSTFIRST.$1 + +python -m infinigen.datagen.manage_jobs --output_folder outputs/$JOBNAME \ + --num_scenes 100 --pipeline_config $@ stereo_video cuda_terrain opengl_gt_noshortrender \ + --wandb_mode online --cleanup big_files --upload \ + --warmup_sec 40000 \ + --config high_quality_terrain diff --git a/infinigen/datagen/tools/scripts/render_video_720p.sh b/infinigen/datagen/tools/scripts/render_video_720p.sh new file mode 100644 index 000000000..68b0b91ca --- /dev/null +++ b/infinigen/datagen/tools/scripts/render_video_720p.sh @@ -0,0 +1,9 @@ +HOSTFIRST=$(hostname | tr "." "\n" | head -n 1) +JOBNAME=$(date '+%m_%d_%H_%M').$HOSTFIRST.$1 + +python -m infinigen.datagen.manage_jobs --output_folder outputs/$JOBNAME \ + --num_scenes 100 --pipeline_config $@ stereo_video cuda_terrain opengl_gt \ + --wandb_mode online --cleanup big_files --upload --warmup_sec 40000 \ + --config high_quality_terrain \ + --overrides compose_scene.generate_resolution=[1280,720] \ + --pipeline_overrides sample_scene_spec.config_sample_mode=\'roundrobin\' diff --git a/infinigen/datagen/tools/scripts/render_video_fire.sh b/infinigen/datagen/tools/scripts/render_video_fire.sh new file mode 100644 index 000000000..874d665e6 --- /dev/null +++ b/infinigen/datagen/tools/scripts/render_video_fire.sh @@ -0,0 +1,6 @@ +# TEMP. REMOVE BEFORE MERGE. + +HOSTFIRST=$(hostname | tr "." "\n" | head -n 1) +JOBNAME=$(date '+%m_%d_%H_%M').$HOSTFIRST.$1 +python -m infinigen.datagen.manage_jobs --output_folder $3/$JOBNAME --num_scenes $2 \ + --pipeline_config $1 monocular_video enable_gpu opengl_gt --wandb_mode online --cleanup none --warmup_sec 10000 --config trailer high_quality_terrain reuse_terrain_assets use_on_the_fly_fire diff --git a/infinigen/datagen/tools/scripts/render_video_stereo.sh b/infinigen/datagen/tools/scripts/render_video_stereo.sh new file mode 100644 index 000000000..a5b920f3a --- /dev/null +++ b/infinigen/datagen/tools/scripts/render_video_stereo.sh @@ -0,0 +1,7 @@ +HOSTFIRST=$(hostname | tr "." "\n" | head -n 1) +JOBNAME=$(date '+%m_%d_%H_%M').$HOSTFIRST.$1 + +python -m infinigen.datagen.manage_jobs --blender_path ../blender/blender --output_folder outputs/$JOBNAME \ + --num_scenes 1000 --pipeline_config $@ stereo cuda_terrain opengl_gt \ + --wandb_mode online --cleanup big_files --upload --warmup_sec 40000 \ + --override compose_scene.generate_resolution=[1280,720] \ diff --git a/worldgen/tools/submit_asset_cache.py b/infinigen/datagen/tools/submit_asset_cache.py similarity index 100% rename from worldgen/tools/submit_asset_cache.py rename to infinigen/datagen/tools/submit_asset_cache.py diff --git a/worldgen/tools/template.html b/infinigen/datagen/tools/template.html similarity index 100% rename from worldgen/tools/template.html rename to infinigen/datagen/tools/template.html diff --git a/worldgen/tools/torch_dataset.py b/infinigen/datagen/tools/torch_dataset.py similarity index 100% rename from worldgen/tools/torch_dataset.py rename to infinigen/datagen/tools/torch_dataset.py diff --git a/infinigen/datagen/util/__init__.py b/infinigen/datagen/util/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/worldgen/tools/util/cancel_jobs.py b/infinigen/datagen/util/cancel_jobs.py similarity index 100% rename from worldgen/tools/util/cancel_jobs.py rename to infinigen/datagen/util/cancel_jobs.py diff --git a/worldgen/tools/util/cleanup.py b/infinigen/datagen/util/cleanup.py similarity index 100% rename from worldgen/tools/util/cleanup.py rename to infinigen/datagen/util/cleanup.py diff --git a/worldgen/tools/util/google_drive_client.py b/infinigen/datagen/util/google_drive_client.py similarity index 100% rename from worldgen/tools/util/google_drive_client.py rename to infinigen/datagen/util/google_drive_client.py diff --git a/worldgen/tools/util/show_gpu_table.py b/infinigen/datagen/util/show_gpu_table.py similarity index 100% rename from worldgen/tools/util/show_gpu_table.py rename to infinigen/datagen/util/show_gpu_table.py diff --git a/worldgen/tools/util/smb_client.py b/infinigen/datagen/util/smb_client.py similarity index 100% rename from worldgen/tools/util/smb_client.py rename to infinigen/datagen/util/smb_client.py diff --git a/worldgen/tools/util/submitit_emulator.py b/infinigen/datagen/util/submitit_emulator.py similarity index 100% rename from worldgen/tools/util/submitit_emulator.py rename to infinigen/datagen/util/submitit_emulator.py diff --git a/infinigen/datagen/util/template.html b/infinigen/datagen/util/template.html new file mode 100644 index 000000000..83c79562d --- /dev/null +++ b/infinigen/datagen/util/template.html @@ -0,0 +1,60 @@ + + + + + + + + + +
+ {% for page in pages %} + {{page}} + {% endfor %} + {% for seed in seeds %} +
+

{{seed}}

+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ {% endfor %} +
+ + + diff --git a/worldgen/tools/util/upload_util.py b/infinigen/datagen/util/upload_util.py similarity index 100% rename from worldgen/tools/util/upload_util.py rename to infinigen/datagen/util/upload_util.py diff --git a/infinigen/infinigen_gpl b/infinigen/infinigen_gpl new file mode 160000 index 000000000..78d34b2d4 --- /dev/null +++ b/infinigen/infinigen_gpl @@ -0,0 +1 @@ +Subproject commit 78d34b2d4b7bd373d22b455dfc59716a78e3f9dd diff --git a/worldgen/terrain/.gitignore b/infinigen/terrain/.gitignore similarity index 100% rename from worldgen/terrain/.gitignore rename to infinigen/terrain/.gitignore diff --git a/worldgen/terrain/__init__.py b/infinigen/terrain/__init__.py similarity index 100% rename from worldgen/terrain/__init__.py rename to infinigen/terrain/__init__.py diff --git a/worldgen/terrain/assets/caves/__init__.py b/infinigen/terrain/assets/caves/__init__.py similarity index 100% rename from worldgen/terrain/assets/caves/__init__.py rename to infinigen/terrain/assets/caves/__init__.py diff --git a/worldgen/terrain/assets/caves/cfg.txt b/infinigen/terrain/assets/caves/cfg.txt similarity index 100% rename from worldgen/terrain/assets/caves/cfg.txt rename to infinigen/terrain/assets/caves/cfg.txt diff --git a/worldgen/terrain/assets/caves/core.py b/infinigen/terrain/assets/caves/core.py similarity index 100% rename from worldgen/terrain/assets/caves/core.py rename to infinigen/terrain/assets/caves/core.py diff --git a/worldgen/terrain/assets/caves/geometry_utils.py b/infinigen/terrain/assets/caves/geometry_utils.py similarity index 100% rename from worldgen/terrain/assets/caves/geometry_utils.py rename to infinigen/terrain/assets/caves/geometry_utils.py diff --git a/worldgen/terrain/assets/caves/pcfg.py b/infinigen/terrain/assets/caves/pcfg.py similarity index 100% rename from worldgen/terrain/assets/caves/pcfg.py rename to infinigen/terrain/assets/caves/pcfg.py diff --git a/worldgen/terrain/assets/landtiles/__init__.py b/infinigen/terrain/assets/landtiles/__init__.py similarity index 100% rename from worldgen/terrain/assets/landtiles/__init__.py rename to infinigen/terrain/assets/landtiles/__init__.py diff --git a/worldgen/terrain/assets/landtiles/ant_landscape.py b/infinigen/terrain/assets/landtiles/ant_landscape.py similarity index 100% rename from worldgen/terrain/assets/landtiles/ant_landscape.py rename to infinigen/terrain/assets/landtiles/ant_landscape.py diff --git a/worldgen/terrain/assets/landtiles/core.py b/infinigen/terrain/assets/landtiles/core.py similarity index 100% rename from worldgen/terrain/assets/landtiles/core.py rename to infinigen/terrain/assets/landtiles/core.py diff --git a/worldgen/terrain/assets/landtiles/custom.py b/infinigen/terrain/assets/landtiles/custom.py similarity index 100% rename from worldgen/terrain/assets/landtiles/custom.py rename to infinigen/terrain/assets/landtiles/custom.py diff --git a/worldgen/terrain/assets/ocean.py b/infinigen/terrain/assets/ocean.py similarity index 100% rename from worldgen/terrain/assets/ocean.py rename to infinigen/terrain/assets/ocean.py diff --git a/worldgen/terrain/assets/upsidedown_mountains.py b/infinigen/terrain/assets/upsidedown_mountains.py similarity index 100% rename from worldgen/terrain/assets/upsidedown_mountains.py rename to infinigen/terrain/assets/upsidedown_mountains.py diff --git a/worldgen/terrain/core.py b/infinigen/terrain/core.py similarity index 100% rename from worldgen/terrain/core.py rename to infinigen/terrain/core.py diff --git a/worldgen/terrain/elements/atmosphere.py b/infinigen/terrain/elements/atmosphere.py similarity index 100% rename from worldgen/terrain/elements/atmosphere.py rename to infinigen/terrain/elements/atmosphere.py diff --git a/worldgen/terrain/elements/caves.py b/infinigen/terrain/elements/caves.py similarity index 100% rename from worldgen/terrain/elements/caves.py rename to infinigen/terrain/elements/caves.py diff --git a/worldgen/terrain/elements/core.py b/infinigen/terrain/elements/core.py similarity index 100% rename from worldgen/terrain/elements/core.py rename to infinigen/terrain/elements/core.py diff --git a/worldgen/terrain/elements/ground.py b/infinigen/terrain/elements/ground.py similarity index 100% rename from worldgen/terrain/elements/ground.py rename to infinigen/terrain/elements/ground.py diff --git a/worldgen/terrain/elements/landtiles.py b/infinigen/terrain/elements/landtiles.py similarity index 100% rename from worldgen/terrain/elements/landtiles.py rename to infinigen/terrain/elements/landtiles.py diff --git a/worldgen/terrain/elements/mountains.py b/infinigen/terrain/elements/mountains.py similarity index 100% rename from worldgen/terrain/elements/mountains.py rename to infinigen/terrain/elements/mountains.py diff --git a/worldgen/terrain/elements/upsidedown_mountains.py b/infinigen/terrain/elements/upsidedown_mountains.py similarity index 100% rename from worldgen/terrain/elements/upsidedown_mountains.py rename to infinigen/terrain/elements/upsidedown_mountains.py diff --git a/worldgen/terrain/elements/voronoi_rocks.py b/infinigen/terrain/elements/voronoi_rocks.py similarity index 100% rename from worldgen/terrain/elements/voronoi_rocks.py rename to infinigen/terrain/elements/voronoi_rocks.py diff --git a/worldgen/terrain/elements/warped_rocks.py b/infinigen/terrain/elements/warped_rocks.py similarity index 100% rename from worldgen/terrain/elements/warped_rocks.py rename to infinigen/terrain/elements/warped_rocks.py diff --git a/worldgen/terrain/elements/waterbody.py b/infinigen/terrain/elements/waterbody.py similarity index 100% rename from worldgen/terrain/elements/waterbody.py rename to infinigen/terrain/elements/waterbody.py diff --git a/worldgen/terrain/install_terrain.sh b/infinigen/terrain/install_terrain.sh similarity index 100% rename from worldgen/terrain/install_terrain.sh rename to infinigen/terrain/install_terrain.sh diff --git a/worldgen/terrain/land_process/erosion.py b/infinigen/terrain/land_process/erosion.py similarity index 100% rename from worldgen/terrain/land_process/erosion.py rename to infinigen/terrain/land_process/erosion.py diff --git a/worldgen/terrain/land_process/snowfall.py b/infinigen/terrain/land_process/snowfall.py similarity index 100% rename from worldgen/terrain/land_process/snowfall.py rename to infinigen/terrain/land_process/snowfall.py diff --git a/worldgen/terrain/marching_cubes/.gitignore b/infinigen/terrain/marching_cubes/.gitignore similarity index 100% rename from worldgen/terrain/marching_cubes/.gitignore rename to infinigen/terrain/marching_cubes/.gitignore diff --git a/worldgen/terrain/marching_cubes/_marching_cubes_lewiner_cy.pyx b/infinigen/terrain/marching_cubes/_marching_cubes_lewiner_cy.pyx similarity index 100% rename from worldgen/terrain/marching_cubes/_marching_cubes_lewiner_cy.pyx rename to infinigen/terrain/marching_cubes/_marching_cubes_lewiner_cy.pyx diff --git a/worldgen/terrain/mesh_to_sdf/LICENSE b/infinigen/terrain/mesh_to_sdf/LICENSE similarity index 100% rename from worldgen/terrain/mesh_to_sdf/LICENSE rename to infinigen/terrain/mesh_to_sdf/LICENSE diff --git a/worldgen/terrain/mesh_to_sdf/__init__.py b/infinigen/terrain/mesh_to_sdf/__init__.py similarity index 100% rename from worldgen/terrain/mesh_to_sdf/__init__.py rename to infinigen/terrain/mesh_to_sdf/__init__.py diff --git a/worldgen/terrain/mesh_to_sdf/pyrender_wrapper.py b/infinigen/terrain/mesh_to_sdf/pyrender_wrapper.py similarity index 100% rename from worldgen/terrain/mesh_to_sdf/pyrender_wrapper.py rename to infinigen/terrain/mesh_to_sdf/pyrender_wrapper.py diff --git a/worldgen/terrain/mesh_to_sdf/scan.py b/infinigen/terrain/mesh_to_sdf/scan.py similarity index 100% rename from worldgen/terrain/mesh_to_sdf/scan.py rename to infinigen/terrain/mesh_to_sdf/scan.py diff --git a/worldgen/terrain/mesh_to_sdf/shaders/mesh.frag b/infinigen/terrain/mesh_to_sdf/shaders/mesh.frag similarity index 100% rename from worldgen/terrain/mesh_to_sdf/shaders/mesh.frag rename to infinigen/terrain/mesh_to_sdf/shaders/mesh.frag diff --git a/worldgen/terrain/mesh_to_sdf/shaders/mesh.vert b/infinigen/terrain/mesh_to_sdf/shaders/mesh.vert similarity index 100% rename from worldgen/terrain/mesh_to_sdf/shaders/mesh.vert rename to infinigen/terrain/mesh_to_sdf/shaders/mesh.vert diff --git a/worldgen/terrain/mesh_to_sdf/surface_point_cloud.py b/infinigen/terrain/mesh_to_sdf/surface_point_cloud.py similarity index 100% rename from worldgen/terrain/mesh_to_sdf/surface_point_cloud.py rename to infinigen/terrain/mesh_to_sdf/surface_point_cloud.py diff --git a/worldgen/terrain/mesh_to_sdf/utils.py b/infinigen/terrain/mesh_to_sdf/utils.py similarity index 100% rename from worldgen/terrain/mesh_to_sdf/utils.py rename to infinigen/terrain/mesh_to_sdf/utils.py diff --git a/worldgen/terrain/mesher/__init__.py b/infinigen/terrain/mesher/__init__.py similarity index 100% rename from worldgen/terrain/mesher/__init__.py rename to infinigen/terrain/mesher/__init__.py diff --git a/worldgen/terrain/mesher/_marching_cubes_lewiner.py b/infinigen/terrain/mesher/_marching_cubes_lewiner.py similarity index 100% rename from worldgen/terrain/mesher/_marching_cubes_lewiner.py rename to infinigen/terrain/mesher/_marching_cubes_lewiner.py diff --git a/worldgen/terrain/mesher/_marching_cubes_lewiner_luts.py b/infinigen/terrain/mesher/_marching_cubes_lewiner_luts.py similarity index 100% rename from worldgen/terrain/mesher/_marching_cubes_lewiner_luts.py rename to infinigen/terrain/mesher/_marching_cubes_lewiner_luts.py diff --git a/worldgen/terrain/mesher/cube_spherical_mesher.py b/infinigen/terrain/mesher/cube_spherical_mesher.py similarity index 100% rename from worldgen/terrain/mesher/cube_spherical_mesher.py rename to infinigen/terrain/mesher/cube_spherical_mesher.py diff --git a/worldgen/terrain/mesher/frontview_spherical_mesher.py b/infinigen/terrain/mesher/frontview_spherical_mesher.py similarity index 100% rename from worldgen/terrain/mesher/frontview_spherical_mesher.py rename to infinigen/terrain/mesher/frontview_spherical_mesher.py diff --git a/worldgen/terrain/mesher/spherical_mesher.py b/infinigen/terrain/mesher/spherical_mesher.py similarity index 100% rename from worldgen/terrain/mesher/spherical_mesher.py rename to infinigen/terrain/mesher/spherical_mesher.py diff --git a/worldgen/terrain/mesher/uniform_mesher.py b/infinigen/terrain/mesher/uniform_mesher.py similarity index 100% rename from worldgen/terrain/mesher/uniform_mesher.py rename to infinigen/terrain/mesher/uniform_mesher.py diff --git a/worldgen/terrain/scene.py b/infinigen/terrain/scene.py similarity index 100% rename from worldgen/terrain/scene.py rename to infinigen/terrain/scene.py diff --git a/worldgen/terrain/setup.py b/infinigen/terrain/setup.py similarity index 100% rename from worldgen/terrain/setup.py rename to infinigen/terrain/setup.py diff --git a/worldgen/terrain/source/common/elements/atmosphere.h b/infinigen/terrain/source/common/elements/atmosphere.h similarity index 100% rename from worldgen/terrain/source/common/elements/atmosphere.h rename to infinigen/terrain/source/common/elements/atmosphere.h diff --git a/worldgen/terrain/source/common/elements/caves.h b/infinigen/terrain/source/common/elements/caves.h similarity index 100% rename from worldgen/terrain/source/common/elements/caves.h rename to infinigen/terrain/source/common/elements/caves.h diff --git a/worldgen/terrain/source/common/elements/ground.h b/infinigen/terrain/source/common/elements/ground.h similarity index 100% rename from worldgen/terrain/source/common/elements/ground.h rename to infinigen/terrain/source/common/elements/ground.h diff --git a/worldgen/terrain/source/common/elements/landtiles.h b/infinigen/terrain/source/common/elements/landtiles.h similarity index 100% rename from worldgen/terrain/source/common/elements/landtiles.h rename to infinigen/terrain/source/common/elements/landtiles.h diff --git a/worldgen/terrain/source/common/elements/mountains.h b/infinigen/terrain/source/common/elements/mountains.h similarity index 100% rename from worldgen/terrain/source/common/elements/mountains.h rename to infinigen/terrain/source/common/elements/mountains.h diff --git a/worldgen/terrain/source/common/elements/upsidedown_mountains.h b/infinigen/terrain/source/common/elements/upsidedown_mountains.h similarity index 100% rename from worldgen/terrain/source/common/elements/upsidedown_mountains.h rename to infinigen/terrain/source/common/elements/upsidedown_mountains.h diff --git a/worldgen/terrain/source/common/elements/voronoi_rocks.h b/infinigen/terrain/source/common/elements/voronoi_rocks.h similarity index 100% rename from worldgen/terrain/source/common/elements/voronoi_rocks.h rename to infinigen/terrain/source/common/elements/voronoi_rocks.h diff --git a/worldgen/terrain/source/common/elements/warped_rocks.h b/infinigen/terrain/source/common/elements/warped_rocks.h similarity index 100% rename from worldgen/terrain/source/common/elements/warped_rocks.h rename to infinigen/terrain/source/common/elements/warped_rocks.h diff --git a/worldgen/terrain/source/common/elements/waterbody.h b/infinigen/terrain/source/common/elements/waterbody.h similarity index 100% rename from worldgen/terrain/source/common/elements/waterbody.h rename to infinigen/terrain/source/common/elements/waterbody.h diff --git a/worldgen/terrain/source/common/surfaces/chunkyrock.h b/infinigen/terrain/source/common/surfaces/chunkyrock.h similarity index 100% rename from worldgen/terrain/source/common/surfaces/chunkyrock.h rename to infinigen/terrain/source/common/surfaces/chunkyrock.h diff --git a/worldgen/terrain/source/common/surfaces/cobble_stone.h b/infinigen/terrain/source/common/surfaces/cobble_stone.h similarity index 100% rename from worldgen/terrain/source/common/surfaces/cobble_stone.h rename to infinigen/terrain/source/common/surfaces/cobble_stone.h diff --git a/worldgen/terrain/source/common/surfaces/cracked_ground.h b/infinigen/terrain/source/common/surfaces/cracked_ground.h similarity index 100% rename from worldgen/terrain/source/common/surfaces/cracked_ground.h rename to infinigen/terrain/source/common/surfaces/cracked_ground.h diff --git a/worldgen/terrain/source/common/surfaces/dirt.h b/infinigen/terrain/source/common/surfaces/dirt.h similarity index 100% rename from worldgen/terrain/source/common/surfaces/dirt.h rename to infinigen/terrain/source/common/surfaces/dirt.h diff --git a/worldgen/terrain/source/common/surfaces/ice.h b/infinigen/terrain/source/common/surfaces/ice.h similarity index 100% rename from worldgen/terrain/source/common/surfaces/ice.h rename to infinigen/terrain/source/common/surfaces/ice.h diff --git a/worldgen/terrain/source/common/surfaces/mountain.h b/infinigen/terrain/source/common/surfaces/mountain.h similarity index 100% rename from worldgen/terrain/source/common/surfaces/mountain.h rename to infinigen/terrain/source/common/surfaces/mountain.h diff --git a/worldgen/terrain/source/common/surfaces/mud.h b/infinigen/terrain/source/common/surfaces/mud.h similarity index 100% rename from worldgen/terrain/source/common/surfaces/mud.h rename to infinigen/terrain/source/common/surfaces/mud.h diff --git a/worldgen/terrain/source/common/surfaces/sand.h b/infinigen/terrain/source/common/surfaces/sand.h similarity index 100% rename from worldgen/terrain/source/common/surfaces/sand.h rename to infinigen/terrain/source/common/surfaces/sand.h diff --git a/worldgen/terrain/source/common/surfaces/sandstone.h b/infinigen/terrain/source/common/surfaces/sandstone.h similarity index 100% rename from worldgen/terrain/source/common/surfaces/sandstone.h rename to infinigen/terrain/source/common/surfaces/sandstone.h diff --git a/worldgen/terrain/source/common/surfaces/snow.h b/infinigen/terrain/source/common/surfaces/snow.h similarity index 100% rename from worldgen/terrain/source/common/surfaces/snow.h rename to infinigen/terrain/source/common/surfaces/snow.h diff --git a/worldgen/terrain/source/common/surfaces/soil.h b/infinigen/terrain/source/common/surfaces/soil.h similarity index 100% rename from worldgen/terrain/source/common/surfaces/soil.h rename to infinigen/terrain/source/common/surfaces/soil.h diff --git a/worldgen/terrain/source/common/surfaces/stone.h b/infinigen/terrain/source/common/surfaces/stone.h similarity index 100% rename from worldgen/terrain/source/common/surfaces/stone.h rename to infinigen/terrain/source/common/surfaces/stone.h diff --git a/worldgen/terrain/source/common/utils/FastNoiseLite.h b/infinigen/terrain/source/common/utils/FastNoiseLite.h similarity index 100% rename from worldgen/terrain/source/common/utils/FastNoiseLite.h rename to infinigen/terrain/source/common/utils/FastNoiseLite.h diff --git a/worldgen/terrain/source/common/utils/elements_util.h b/infinigen/terrain/source/common/utils/elements_util.h similarity index 100% rename from worldgen/terrain/source/common/utils/elements_util.h rename to infinigen/terrain/source/common/utils/elements_util.h diff --git a/worldgen/terrain/source/common/utils/smooth_bool_ops.h b/infinigen/terrain/source/common/utils/smooth_bool_ops.h similarity index 100% rename from worldgen/terrain/source/common/utils/smooth_bool_ops.h rename to infinigen/terrain/source/common/utils/smooth_bool_ops.h diff --git a/worldgen/terrain/source/common/utils/vectors.h b/infinigen/terrain/source/common/utils/vectors.h similarity index 100% rename from worldgen/terrain/source/common/utils/vectors.h rename to infinigen/terrain/source/common/utils/vectors.h diff --git a/worldgen/terrain/source/cpu/elements/atmosphere.cpp b/infinigen/terrain/source/cpu/elements/atmosphere.cpp similarity index 100% rename from worldgen/terrain/source/cpu/elements/atmosphere.cpp rename to infinigen/terrain/source/cpu/elements/atmosphere.cpp diff --git a/worldgen/terrain/source/cpu/elements/core.cpp b/infinigen/terrain/source/cpu/elements/core.cpp similarity index 100% rename from worldgen/terrain/source/cpu/elements/core.cpp rename to infinigen/terrain/source/cpu/elements/core.cpp diff --git a/worldgen/terrain/source/cpu/elements/ground.cpp b/infinigen/terrain/source/cpu/elements/ground.cpp similarity index 100% rename from worldgen/terrain/source/cpu/elements/ground.cpp rename to infinigen/terrain/source/cpu/elements/ground.cpp diff --git a/worldgen/terrain/source/cpu/elements/header.h b/infinigen/terrain/source/cpu/elements/header.h similarity index 100% rename from worldgen/terrain/source/cpu/elements/header.h rename to infinigen/terrain/source/cpu/elements/header.h diff --git a/worldgen/terrain/source/cpu/elements/landtiles.cpp b/infinigen/terrain/source/cpu/elements/landtiles.cpp similarity index 100% rename from worldgen/terrain/source/cpu/elements/landtiles.cpp rename to infinigen/terrain/source/cpu/elements/landtiles.cpp diff --git a/worldgen/terrain/source/cpu/elements/mountains.cpp b/infinigen/terrain/source/cpu/elements/mountains.cpp similarity index 100% rename from worldgen/terrain/source/cpu/elements/mountains.cpp rename to infinigen/terrain/source/cpu/elements/mountains.cpp diff --git a/worldgen/terrain/source/cpu/elements/upsidedown_mountains.cpp b/infinigen/terrain/source/cpu/elements/upsidedown_mountains.cpp similarity index 100% rename from worldgen/terrain/source/cpu/elements/upsidedown_mountains.cpp rename to infinigen/terrain/source/cpu/elements/upsidedown_mountains.cpp diff --git a/worldgen/terrain/source/cpu/elements/voronoi_rocks.cpp b/infinigen/terrain/source/cpu/elements/voronoi_rocks.cpp similarity index 100% rename from worldgen/terrain/source/cpu/elements/voronoi_rocks.cpp rename to infinigen/terrain/source/cpu/elements/voronoi_rocks.cpp diff --git a/worldgen/terrain/source/cpu/elements/warped_rocks.cpp b/infinigen/terrain/source/cpu/elements/warped_rocks.cpp similarity index 100% rename from worldgen/terrain/source/cpu/elements/warped_rocks.cpp rename to infinigen/terrain/source/cpu/elements/warped_rocks.cpp diff --git a/worldgen/terrain/source/cpu/elements/waterbody.cpp b/infinigen/terrain/source/cpu/elements/waterbody.cpp similarity index 100% rename from worldgen/terrain/source/cpu/elements/waterbody.cpp rename to infinigen/terrain/source/cpu/elements/waterbody.cpp diff --git a/worldgen/terrain/source/cpu/meshing/cube_spherical_mesher.cpp b/infinigen/terrain/source/cpu/meshing/cube_spherical_mesher.cpp similarity index 100% rename from worldgen/terrain/source/cpu/meshing/cube_spherical_mesher.cpp rename to infinigen/terrain/source/cpu/meshing/cube_spherical_mesher.cpp diff --git a/worldgen/terrain/source/cpu/meshing/frontview_spherical_mesher.cpp b/infinigen/terrain/source/cpu/meshing/frontview_spherical_mesher.cpp similarity index 100% rename from worldgen/terrain/source/cpu/meshing/frontview_spherical_mesher.cpp rename to infinigen/terrain/source/cpu/meshing/frontview_spherical_mesher.cpp diff --git a/worldgen/terrain/source/cpu/meshing/uniform_mesher.cpp b/infinigen/terrain/source/cpu/meshing/uniform_mesher.cpp similarity index 100% rename from worldgen/terrain/source/cpu/meshing/uniform_mesher.cpp rename to infinigen/terrain/source/cpu/meshing/uniform_mesher.cpp diff --git a/worldgen/terrain/source/cpu/meshing/utils.cpp b/infinigen/terrain/source/cpu/meshing/utils.cpp similarity index 100% rename from worldgen/terrain/source/cpu/meshing/utils.cpp rename to infinigen/terrain/source/cpu/meshing/utils.cpp diff --git a/worldgen/terrain/source/cpu/meshing/visibility_test.cpp b/infinigen/terrain/source/cpu/meshing/visibility_test.cpp similarity index 100% rename from worldgen/terrain/source/cpu/meshing/visibility_test.cpp rename to infinigen/terrain/source/cpu/meshing/visibility_test.cpp diff --git a/worldgen/terrain/source/cpu/soil_machine/SoilMachine.cpp b/infinigen/terrain/source/cpu/soil_machine/SoilMachine.cpp similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/SoilMachine.cpp rename to infinigen/terrain/source/cpu/soil_machine/SoilMachine.cpp diff --git a/worldgen/terrain/source/cpu/soil_machine/include/FastNoiseLite.h b/infinigen/terrain/source/cpu/soil_machine/include/FastNoiseLite.h similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/include/FastNoiseLite.h rename to infinigen/terrain/source/cpu/soil_machine/include/FastNoiseLite.h diff --git a/worldgen/terrain/source/cpu/soil_machine/include/distribution.h b/infinigen/terrain/source/cpu/soil_machine/include/distribution.h similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/include/distribution.h rename to infinigen/terrain/source/cpu/soil_machine/include/distribution.h diff --git a/worldgen/terrain/source/cpu/soil_machine/include/vertexpool.h b/infinigen/terrain/source/cpu/soil_machine/include/vertexpool.h similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/include/vertexpool.h rename to infinigen/terrain/source/cpu/soil_machine/include/vertexpool.h diff --git a/worldgen/terrain/source/cpu/soil_machine/io.h b/infinigen/terrain/source/cpu/soil_machine/io.h similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/io.h rename to infinigen/terrain/source/cpu/soil_machine/io.h diff --git a/worldgen/terrain/source/cpu/soil_machine/layermap.h b/infinigen/terrain/source/cpu/soil_machine/layermap.h similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/layermap.h rename to infinigen/terrain/source/cpu/soil_machine/layermap.h diff --git a/worldgen/terrain/source/cpu/soil_machine/particle/particle.h b/infinigen/terrain/source/cpu/soil_machine/particle/particle.h similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/particle/particle.h rename to infinigen/terrain/source/cpu/soil_machine/particle/particle.h diff --git a/worldgen/terrain/source/cpu/soil_machine/particle/water.h b/infinigen/terrain/source/cpu/soil_machine/particle/water.h similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/particle/water.h rename to infinigen/terrain/source/cpu/soil_machine/particle/water.h diff --git a/worldgen/terrain/source/cpu/soil_machine/particle/wind.h b/infinigen/terrain/source/cpu/soil_machine/particle/wind.h similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/particle/wind.h rename to infinigen/terrain/source/cpu/soil_machine/particle/wind.h diff --git a/worldgen/terrain/source/cpu/soil_machine/soil/README.md b/infinigen/terrain/source/cpu/soil_machine/soil/README.md similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/soil/README.md rename to infinigen/terrain/source/cpu/soil_machine/soil/README.md diff --git a/worldgen/terrain/source/cpu/soil_machine/soil/default.soil b/infinigen/terrain/source/cpu/soil_machine/soil/default.soil similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/soil/default.soil rename to infinigen/terrain/source/cpu/soil_machine/soil/default.soil diff --git a/worldgen/terrain/source/cpu/soil_machine/soil/rockgravelpebbles.soil b/infinigen/terrain/source/cpu/soil_machine/soil/rockgravelpebbles.soil similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/soil/rockgravelpebbles.soil rename to infinigen/terrain/source/cpu/soil_machine/soil/rockgravelpebbles.soil diff --git a/worldgen/terrain/source/cpu/soil_machine/soil/rockgravelpebblessand.soil b/infinigen/terrain/source/cpu/soil_machine/soil/rockgravelpebblessand.soil similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/soil/rockgravelpebblessand.soil rename to infinigen/terrain/source/cpu/soil_machine/soil/rockgravelpebblessand.soil diff --git a/worldgen/terrain/source/cpu/soil_machine/soil/rocksand.soil b/infinigen/terrain/source/cpu/soil_machine/soil/rocksand.soil similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/soil/rocksand.soil rename to infinigen/terrain/source/cpu/soil_machine/soil/rocksand.soil diff --git a/worldgen/terrain/source/cpu/soil_machine/soil/sand.soil b/infinigen/terrain/source/cpu/soil_machine/soil/sand.soil similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/soil/sand.soil rename to infinigen/terrain/source/cpu/soil_machine/soil/sand.soil diff --git a/worldgen/terrain/source/cpu/soil_machine/surface.h b/infinigen/terrain/source/cpu/soil_machine/surface.h similarity index 100% rename from worldgen/terrain/source/cpu/soil_machine/surface.h rename to infinigen/terrain/source/cpu/soil_machine/surface.h diff --git a/worldgen/terrain/source/cpu/surfaces/chunkyrock.cpp b/infinigen/terrain/source/cpu/surfaces/chunkyrock.cpp similarity index 100% rename from worldgen/terrain/source/cpu/surfaces/chunkyrock.cpp rename to infinigen/terrain/source/cpu/surfaces/chunkyrock.cpp diff --git a/worldgen/terrain/source/cpu/surfaces/cobble_stone.cpp b/infinigen/terrain/source/cpu/surfaces/cobble_stone.cpp similarity index 100% rename from worldgen/terrain/source/cpu/surfaces/cobble_stone.cpp rename to infinigen/terrain/source/cpu/surfaces/cobble_stone.cpp diff --git a/worldgen/terrain/source/cpu/surfaces/cracked_ground.cpp b/infinigen/terrain/source/cpu/surfaces/cracked_ground.cpp similarity index 100% rename from worldgen/terrain/source/cpu/surfaces/cracked_ground.cpp rename to infinigen/terrain/source/cpu/surfaces/cracked_ground.cpp diff --git a/worldgen/terrain/source/cpu/surfaces/dirt.cpp b/infinigen/terrain/source/cpu/surfaces/dirt.cpp similarity index 100% rename from worldgen/terrain/source/cpu/surfaces/dirt.cpp rename to infinigen/terrain/source/cpu/surfaces/dirt.cpp diff --git a/worldgen/terrain/source/cpu/surfaces/header.h b/infinigen/terrain/source/cpu/surfaces/header.h similarity index 100% rename from worldgen/terrain/source/cpu/surfaces/header.h rename to infinigen/terrain/source/cpu/surfaces/header.h diff --git a/worldgen/terrain/source/cpu/surfaces/ice.cpp b/infinigen/terrain/source/cpu/surfaces/ice.cpp similarity index 100% rename from worldgen/terrain/source/cpu/surfaces/ice.cpp rename to infinigen/terrain/source/cpu/surfaces/ice.cpp diff --git a/worldgen/terrain/source/cpu/surfaces/mountain.cpp b/infinigen/terrain/source/cpu/surfaces/mountain.cpp similarity index 100% rename from worldgen/terrain/source/cpu/surfaces/mountain.cpp rename to infinigen/terrain/source/cpu/surfaces/mountain.cpp diff --git a/worldgen/terrain/source/cpu/surfaces/mud.cpp b/infinigen/terrain/source/cpu/surfaces/mud.cpp similarity index 100% rename from worldgen/terrain/source/cpu/surfaces/mud.cpp rename to infinigen/terrain/source/cpu/surfaces/mud.cpp diff --git a/worldgen/terrain/source/cpu/surfaces/sand.cpp b/infinigen/terrain/source/cpu/surfaces/sand.cpp similarity index 100% rename from worldgen/terrain/source/cpu/surfaces/sand.cpp rename to infinigen/terrain/source/cpu/surfaces/sand.cpp diff --git a/worldgen/terrain/source/cpu/surfaces/sandstone.cpp b/infinigen/terrain/source/cpu/surfaces/sandstone.cpp similarity index 100% rename from worldgen/terrain/source/cpu/surfaces/sandstone.cpp rename to infinigen/terrain/source/cpu/surfaces/sandstone.cpp diff --git a/worldgen/terrain/source/cpu/surfaces/snow.cpp b/infinigen/terrain/source/cpu/surfaces/snow.cpp similarity index 100% rename from worldgen/terrain/source/cpu/surfaces/snow.cpp rename to infinigen/terrain/source/cpu/surfaces/snow.cpp diff --git a/worldgen/terrain/source/cpu/surfaces/soil.cpp b/infinigen/terrain/source/cpu/surfaces/soil.cpp similarity index 100% rename from worldgen/terrain/source/cpu/surfaces/soil.cpp rename to infinigen/terrain/source/cpu/surfaces/soil.cpp diff --git a/worldgen/terrain/source/cpu/surfaces/stone.cpp b/infinigen/terrain/source/cpu/surfaces/stone.cpp similarity index 100% rename from worldgen/terrain/source/cpu/surfaces/stone.cpp rename to infinigen/terrain/source/cpu/surfaces/stone.cpp diff --git a/worldgen/terrain/source/cpu/utils/FastNoiseLite.cpp b/infinigen/terrain/source/cpu/utils/FastNoiseLite.cpp similarity index 100% rename from worldgen/terrain/source/cpu/utils/FastNoiseLite.cpp rename to infinigen/terrain/source/cpu/utils/FastNoiseLite.cpp diff --git a/worldgen/terrain/source/cuda/elements/atmosphere.cu b/infinigen/terrain/source/cuda/elements/atmosphere.cu similarity index 100% rename from worldgen/terrain/source/cuda/elements/atmosphere.cu rename to infinigen/terrain/source/cuda/elements/atmosphere.cu diff --git a/worldgen/terrain/source/cuda/elements/core.cu b/infinigen/terrain/source/cuda/elements/core.cu similarity index 100% rename from worldgen/terrain/source/cuda/elements/core.cu rename to infinigen/terrain/source/cuda/elements/core.cu diff --git a/worldgen/terrain/source/cuda/elements/ground.cu b/infinigen/terrain/source/cuda/elements/ground.cu similarity index 100% rename from worldgen/terrain/source/cuda/elements/ground.cu rename to infinigen/terrain/source/cuda/elements/ground.cu diff --git a/worldgen/terrain/source/cuda/elements/header.h b/infinigen/terrain/source/cuda/elements/header.h similarity index 100% rename from worldgen/terrain/source/cuda/elements/header.h rename to infinigen/terrain/source/cuda/elements/header.h diff --git a/worldgen/terrain/source/cuda/elements/landtiles.cu b/infinigen/terrain/source/cuda/elements/landtiles.cu similarity index 100% rename from worldgen/terrain/source/cuda/elements/landtiles.cu rename to infinigen/terrain/source/cuda/elements/landtiles.cu diff --git a/worldgen/terrain/source/cuda/elements/mountains.cu b/infinigen/terrain/source/cuda/elements/mountains.cu similarity index 100% rename from worldgen/terrain/source/cuda/elements/mountains.cu rename to infinigen/terrain/source/cuda/elements/mountains.cu diff --git a/worldgen/terrain/source/cuda/elements/upsidedown_mountains.cu b/infinigen/terrain/source/cuda/elements/upsidedown_mountains.cu similarity index 100% rename from worldgen/terrain/source/cuda/elements/upsidedown_mountains.cu rename to infinigen/terrain/source/cuda/elements/upsidedown_mountains.cu diff --git a/worldgen/terrain/source/cuda/elements/voronoi_rocks.cu b/infinigen/terrain/source/cuda/elements/voronoi_rocks.cu similarity index 100% rename from worldgen/terrain/source/cuda/elements/voronoi_rocks.cu rename to infinigen/terrain/source/cuda/elements/voronoi_rocks.cu diff --git a/worldgen/terrain/source/cuda/elements/warped_rocks.cu b/infinigen/terrain/source/cuda/elements/warped_rocks.cu similarity index 100% rename from worldgen/terrain/source/cuda/elements/warped_rocks.cu rename to infinigen/terrain/source/cuda/elements/warped_rocks.cu diff --git a/worldgen/terrain/source/cuda/elements/waterbody.cu b/infinigen/terrain/source/cuda/elements/waterbody.cu similarity index 100% rename from worldgen/terrain/source/cuda/elements/waterbody.cu rename to infinigen/terrain/source/cuda/elements/waterbody.cu diff --git a/worldgen/terrain/source/cuda/surfaces/chunkyrock.cu b/infinigen/terrain/source/cuda/surfaces/chunkyrock.cu similarity index 100% rename from worldgen/terrain/source/cuda/surfaces/chunkyrock.cu rename to infinigen/terrain/source/cuda/surfaces/chunkyrock.cu diff --git a/worldgen/terrain/source/cuda/surfaces/cobble_stone.cu b/infinigen/terrain/source/cuda/surfaces/cobble_stone.cu similarity index 100% rename from worldgen/terrain/source/cuda/surfaces/cobble_stone.cu rename to infinigen/terrain/source/cuda/surfaces/cobble_stone.cu diff --git a/worldgen/terrain/source/cuda/surfaces/cracked_ground.cu b/infinigen/terrain/source/cuda/surfaces/cracked_ground.cu similarity index 100% rename from worldgen/terrain/source/cuda/surfaces/cracked_ground.cu rename to infinigen/terrain/source/cuda/surfaces/cracked_ground.cu diff --git a/worldgen/terrain/source/cuda/surfaces/dirt.cu b/infinigen/terrain/source/cuda/surfaces/dirt.cu similarity index 100% rename from worldgen/terrain/source/cuda/surfaces/dirt.cu rename to infinigen/terrain/source/cuda/surfaces/dirt.cu diff --git a/worldgen/terrain/source/cuda/surfaces/header.h b/infinigen/terrain/source/cuda/surfaces/header.h similarity index 100% rename from worldgen/terrain/source/cuda/surfaces/header.h rename to infinigen/terrain/source/cuda/surfaces/header.h diff --git a/worldgen/terrain/source/cuda/surfaces/ice.cu b/infinigen/terrain/source/cuda/surfaces/ice.cu similarity index 100% rename from worldgen/terrain/source/cuda/surfaces/ice.cu rename to infinigen/terrain/source/cuda/surfaces/ice.cu diff --git a/worldgen/terrain/source/cuda/surfaces/mountain.cu b/infinigen/terrain/source/cuda/surfaces/mountain.cu similarity index 100% rename from worldgen/terrain/source/cuda/surfaces/mountain.cu rename to infinigen/terrain/source/cuda/surfaces/mountain.cu diff --git a/worldgen/terrain/source/cuda/surfaces/mud.cu b/infinigen/terrain/source/cuda/surfaces/mud.cu similarity index 100% rename from worldgen/terrain/source/cuda/surfaces/mud.cu rename to infinigen/terrain/source/cuda/surfaces/mud.cu diff --git a/worldgen/terrain/source/cuda/surfaces/sand.cu b/infinigen/terrain/source/cuda/surfaces/sand.cu similarity index 100% rename from worldgen/terrain/source/cuda/surfaces/sand.cu rename to infinigen/terrain/source/cuda/surfaces/sand.cu diff --git a/worldgen/terrain/source/cuda/surfaces/sandstone.cu b/infinigen/terrain/source/cuda/surfaces/sandstone.cu similarity index 100% rename from worldgen/terrain/source/cuda/surfaces/sandstone.cu rename to infinigen/terrain/source/cuda/surfaces/sandstone.cu diff --git a/worldgen/terrain/source/cuda/surfaces/snow.cu b/infinigen/terrain/source/cuda/surfaces/snow.cu similarity index 100% rename from worldgen/terrain/source/cuda/surfaces/snow.cu rename to infinigen/terrain/source/cuda/surfaces/snow.cu diff --git a/worldgen/terrain/source/cuda/surfaces/soil.cu b/infinigen/terrain/source/cuda/surfaces/soil.cu similarity index 100% rename from worldgen/terrain/source/cuda/surfaces/soil.cu rename to infinigen/terrain/source/cuda/surfaces/soil.cu diff --git a/worldgen/terrain/source/cuda/surfaces/stone.cu b/infinigen/terrain/source/cuda/surfaces/stone.cu similarity index 100% rename from worldgen/terrain/source/cuda/surfaces/stone.cu rename to infinigen/terrain/source/cuda/surfaces/stone.cu diff --git a/worldgen/terrain/source/cuda/utils/FastNoiseLite.cu b/infinigen/terrain/source/cuda/utils/FastNoiseLite.cu similarity index 100% rename from worldgen/terrain/source/cuda/utils/FastNoiseLite.cu rename to infinigen/terrain/source/cuda/utils/FastNoiseLite.cu diff --git a/worldgen/terrain/surface_kernel/core.py b/infinigen/terrain/surface_kernel/core.py similarity index 100% rename from worldgen/terrain/surface_kernel/core.py rename to infinigen/terrain/surface_kernel/core.py diff --git a/worldgen/terrain/surface_kernel/kernelizer.py b/infinigen/terrain/surface_kernel/kernelizer.py similarity index 100% rename from worldgen/terrain/surface_kernel/kernelizer.py rename to infinigen/terrain/surface_kernel/kernelizer.py diff --git a/worldgen/terrain/utils/__init__.py b/infinigen/terrain/utils/__init__.py similarity index 100% rename from worldgen/terrain/utils/__init__.py rename to infinigen/terrain/utils/__init__.py diff --git a/worldgen/terrain/utils/camera.py b/infinigen/terrain/utils/camera.py similarity index 100% rename from worldgen/terrain/utils/camera.py rename to infinigen/terrain/utils/camera.py diff --git a/worldgen/terrain/utils/ctype_util.py b/infinigen/terrain/utils/ctype_util.py similarity index 100% rename from worldgen/terrain/utils/ctype_util.py rename to infinigen/terrain/utils/ctype_util.py diff --git a/worldgen/terrain/utils/image_processing.py b/infinigen/terrain/utils/image_processing.py similarity index 100% rename from worldgen/terrain/utils/image_processing.py rename to infinigen/terrain/utils/image_processing.py diff --git a/worldgen/terrain/utils/kernelizer_util.py b/infinigen/terrain/utils/kernelizer_util.py similarity index 100% rename from worldgen/terrain/utils/kernelizer_util.py rename to infinigen/terrain/utils/kernelizer_util.py diff --git a/worldgen/terrain/utils/logging.py b/infinigen/terrain/utils/logging.py similarity index 100% rename from worldgen/terrain/utils/logging.py rename to infinigen/terrain/utils/logging.py diff --git a/worldgen/terrain/utils/mesh.py b/infinigen/terrain/utils/mesh.py similarity index 100% rename from worldgen/terrain/utils/mesh.py rename to infinigen/terrain/utils/mesh.py diff --git a/worldgen/terrain/utils/random.py b/infinigen/terrain/utils/random.py similarity index 100% rename from worldgen/terrain/utils/random.py rename to infinigen/terrain/utils/random.py diff --git a/worldgen/tools/install/compile_flip_fluids.sh b/infinigen/tools/install/compile_flip_fluids.sh similarity index 100% rename from worldgen/tools/install/compile_flip_fluids.sh rename to infinigen/tools/install/compile_flip_fluids.sh diff --git a/worldgen/tools/install/compile_opengl.sh b/infinigen/tools/install/compile_opengl.sh similarity index 100% rename from worldgen/tools/install/compile_opengl.sh rename to infinigen/tools/install/compile_opengl.sh diff --git a/worldgen/tools/dev/kernelize_surfaces.py b/infinigen/tools/kernelize_surfaces.py similarity index 100% rename from worldgen/tools/dev/kernelize_surfaces.py rename to infinigen/tools/kernelize_surfaces.py diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 000000000..90d43591f --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,18 @@ +import pytest + +def pytest_addoption(parser): + parser.addoption( "--dir",action="store") + parser.addoption( "--num",action="store") + parser.addoption( "--days",action="store") + +@pytest.fixture() +def dir(request): + return request.config.getoption("--dir") + +@pytest.fixture() +def num(request): + return request.config.getoption("--num") + +@pytest.fixture() +def days(request): + return request.config.getoption("--days") \ No newline at end of file diff --git a/worldgen/tools/testing/run_tests.sh b/tests/run_tests.sh similarity index 83% rename from worldgen/tools/testing/run_tests.sh rename to tests/run_tests.sh index 682f901d9..b838f57d2 100644 --- a/worldgen/tools/testing/run_tests.sh +++ b/tests/run_tests.sh @@ -1,7 +1,7 @@ #!/bin/bash cwd=$(pwd) cd ../.. -python -m tools.manage_datagen_jobs --output_folder "$1" \ +python -m infinigen.datagen.manage_jobs --output_folder "$1" \ --num_scenes "$2" --pipeline_configs slurm monocular cuda_terrain gt_test \ --pipeline_overrides LocalScheduleHandler.use_gpu=True diff --git a/worldgen/tools/testing/test_infinigen.py b/tests/test_infinigen.py similarity index 100% rename from worldgen/tools/testing/test_infinigen.py rename to tests/test_infinigen.py diff --git a/worldgen/assets/creatures/tools/dev_script_save_nurbs_handles.py b/worldgen/assets/creatures/tools/dev_script_save_nurbs_handles.py deleted file mode 100644 index 54ac8629c..000000000 --- a/worldgen/assets/creatures/tools/dev_script_save_nurbs_handles.py +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) Princeton University. -# This source code is licensed under the BSD 3-Clause license found in the LICENSE file in the root directory of this source tree. - -# Authors: Alexander Raistrick - - -''' -1. Copy this script into the blender scripting UI -2. Select a Nurbs Cylinder object you have modified into some shape -3. Run the script -''' - -import pdb - -import bpy -import mathutils -import numpy as np - -from assets.creatures.geometry import lofting, nurbs, skin_ops -from assets.creatures.util.creature_parser import parse_nurbs_data -from util import blender as butil - -vis = False - -for obj in bpy.context.selected_objects: - handles = parse_nurbs_data(obj)[..., :3] - - # blender uses V = long axis of a cylinder by default, this is not our convention - handles = handles.transpose(0, 1, 2) - - # blender has U = 0 face right, ours faces down - handles = np.roll(handles, 2, axis=1) - - - handles = handles[:, ::-1] - - if vis: - new_obj = nurbs.nurbs(handles, method='blender', face_size=0.05) - new_obj.location = obj.location + mathutils.Vector((0, 0.5, 0)) - - path = f'{obj.name}.npy' - np.save(path, handles) - print('Saved', path) \ No newline at end of file diff --git a/worldgen/assets/leaves/__init__.py b/worldgen/assets/leaves/__init__.py deleted file mode 100644 index 9eac94a74..000000000 --- a/worldgen/assets/leaves/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from .leaf_broadleaf import LeafFactoryBroadleaf -from .leaf_ginko import LeafFactoryGinko -from .leaf_maple import LeafFactoryMaple -from .leaf_pine import LeafFactoryPine -from .leaf_v2 import LeafFactoryV2 -from .leaf import LeafFactory \ No newline at end of file diff --git a/worldgen/infinigen_gpl b/worldgen/infinigen_gpl deleted file mode 160000 index 4e3b97bd9..000000000 --- a/worldgen/infinigen_gpl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4e3b97bd9d0965b9c78bb42e93773e0ee6be55cb diff --git a/worldgen/surfaces/dev_script.py b/worldgen/surfaces/dev_script.py deleted file mode 100644 index 6bd009ffc..000000000 --- a/worldgen/surfaces/dev_script.py +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (c) Princeton University. -# This source code is licensed under the BSD 3-Clause license found in the LICENSE file in the root directory of this source tree. - -# Authors: Alexander Raistrick - - -''' -To use this file, do the following: - -cd worldgen -blender dev_scene.blend - -Then in the blender gui: -- click the 'Scripting' tab -- click the folder button to open this file as a new script -- append some meshes from another blend file, or run some other code to create some objects -- implement a geonode / material setup using the node wrangler in the functions below -- left/right click the object you want to apply a material to -- click the play button to run the script - -''' - -import bpy -import mathutils -from numpy.random import uniform, normal -from nodes.node_wrangler import Nodes, NodeWrangler -from surfaces import surface - -def shader_dev(nw): - principled_bsdf = nw.new_node(Nodes.PrincipledBSDF) - - material_output = nw.new_node(Nodes.MaterialOutput, - input_kwargs={'Surface': principled_bsdf}) - -def geo_dev(nw): - group_input = nw.new_node(Nodes.GroupInput) - - group_output = nw.new_node(Nodes.GroupOutput, - input_kwargs={'Geometry': group_input.outputs["Geometry"]}) - -def apply(obj): - surface.add_geomod(obj, geo_dev, apply=False) - surface.add_material(obj, shader_dev, reuse=False) -apply(bpy.context.active_object) \ No newline at end of file diff --git a/worldgen/surfaces/surface_mixing_dev_script.py b/worldgen/surfaces/surface_mixing_dev_script.py deleted file mode 100644 index e5aaa2cdf..000000000 --- a/worldgen/surfaces/surface_mixing_dev_script.py +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) Princeton University. -# This source code is licensed under the BSD 3-Clause license found in the LICENSE file in the root directory of this source tree. - -# Authors: Lahav Lipson - - -''' -To use this file, do the following: - -cd worldgen -blender dev_scene.blend - -Then in the blender gui: -- click the 'Scripting' tab -- click the folder button to open this file as a new script -- append some meshes from another blend file, or run some other code to create some objects -- implement a geonode / material setup using the node wrangler in the functions below -- left/right click the object you want to apply a material to -- click the play button to run the script - -''' - -import bpy -import gin -import mathutils -from numpy.random import uniform, normal -from nodes.node_wrangler import Nodes, NodeWrangler -from surfaces import surface -from surfaces.templates import dirt, cobble_stone, cracked_ground, sand, mountain -import generate # Necessary to parse gin config files - -gin.clear_config() -gin.enter_interactive_mode() -gin.parse_config_files_and_bindings(["config/base.gin"], []) - -def right_half(nw: NodeWrangler, **kwargs): - x = nw.new_node(Nodes.SeparateXYZ, [nw.new_node(Nodes.InputPosition)]) - return nw.new_node(Nodes.Math, [(x, "Y"), 0], attrs={"operation": "GREATER_THAN"}) - -def left_half(nw: NodeWrangler, **kwargs): - x = nw.new_node(Nodes.SeparateXYZ, [nw.new_node(Nodes.InputPosition)]) - return nw.new_node(Nodes.Math, [(x, "Y"), 0], attrs={"operation": "LESS_THAN"}) - -obj = bpy.context.active_object -cracked_ground.apply(obj, selection=surface.write_attribute(obj, right_half)) -dirt.apply(obj, selection=surface.write_attribute(obj, left_half)) \ No newline at end of file diff --git a/worldgen/tools/pipeline_configs/compute_platform/local_128GB.gin b/worldgen/tools/pipeline_configs/compute_platform/local_128GB.gin deleted file mode 100644 index d73798fa0..000000000 --- a/worldgen/tools/pipeline_configs/compute_platform/local_128GB.gin +++ /dev/null @@ -1,5 +0,0 @@ -include 'tools/pipeline_configs/compute_platform/local_256GB.gin' - -manage_datagen_jobs.num_concurrent=8 - - diff --git a/worldgen/tools/pipeline_configs/compute_platform/local_16GB.gin b/worldgen/tools/pipeline_configs/compute_platform/local_16GB.gin deleted file mode 100644 index 3ee5e8d96..000000000 --- a/worldgen/tools/pipeline_configs/compute_platform/local_16GB.gin +++ /dev/null @@ -1,6 +0,0 @@ -include 'tools/pipeline_configs/compute_platform/local_256GB.gin' - -manage_datagen_jobs.num_concurrent=1 - - - diff --git a/worldgen/tools/pipeline_configs/compute_platform/local_64GB.gin b/worldgen/tools/pipeline_configs/compute_platform/local_64GB.gin deleted file mode 100644 index 9abdc054b..000000000 --- a/worldgen/tools/pipeline_configs/compute_platform/local_64GB.gin +++ /dev/null @@ -1,5 +0,0 @@ -include 'tools/pipeline_configs/compute_platform/local_256GB.gin' - -manage_datagen_jobs.num_concurrent=3 - - diff --git a/worldgen/tools/pipeline_configs/data_schema/monocular_flow.gin b/worldgen/tools/pipeline_configs/data_schema/monocular_flow.gin deleted file mode 100644 index b763ca944..000000000 --- a/worldgen/tools/pipeline_configs/data_schema/monocular_flow.gin +++ /dev/null @@ -1,4 +0,0 @@ -include 'tools/pipeline_configs/data_schema/monocular.gin' -iterate_scene_tasks.frame_range=(1, 2) - - diff --git a/worldgen/tools/pipeline_configs/data_schema/stereo_video.gin b/worldgen/tools/pipeline_configs/data_schema/stereo_video.gin deleted file mode 100644 index 8c92326df..000000000 --- a/worldgen/tools/pipeline_configs/data_schema/stereo_video.gin +++ /dev/null @@ -1,2 +0,0 @@ -include 'tools/pipeline_configs/data_schema/monocular_video.gin' -iterate_scene_tasks.cam_id_ranges = [1, 2]