"Minecraft我的世界相信很多人都玩过,但是仅仅一个像素风的沙盒游戏体验,想想一下,如果能将这个像素风的画面通过程序化的方式渲染成逼真的视野,岂不美哉"
最近AIGC领域出现了这样一篇论文,可以使用程序化的方式生成无限、3D逼真的视野。主要是基于blender来完成。虽然现阶段还处于一个比较初级的玩法,但是也可以粗略感受一下他的强大。
首先,我们还是找到git仓库princeton-vl/infinigen: Infinite Photorealistic Worlds using Procedural Generation (github.com),然后根据说明,我们进行如下操作皆可以完成安装
git clone --recursive https://github.com/princeton-vl/infinigen.git
cd infinigen
conda create --name infinigen python=3.10
conda activate infinigen
bash install.sh
踩坑记录:
若出现如下错误:
需要安装g++,gcc,不然安装richdem会出现编译不成功的情况
若出现如下错误
说明glm没有安装好,需要安装glm库sudo apt-get install libglm-dev,如果安装过程中提示没有这个包,需要更新一下apt-get update
然后我们根据如下提示,进行图片生成
cd worldgen
mkdir outputs
# Generate a scene layout
$BLENDER -noaudio --background --python generate.py -- --seed 0 --task coarse -g desert simple --output_folder outputs/helloworld/coarse
# Populate unique assets
$BLENDER -noaudio --background --python generate.py -- --seed 0 --task populate fine_terrain -g desert simple --input_folder outputs/helloworld/coarse --output_folder outputs/helloworld/fine
# Render RGB images
$BLENDER -noaudio --background --python generate.py -- --seed 0 --task render -g desert simple --input_folder outputs/helloworld/fine --output_folder outputs/helloworld/frames
# Render again for accurate ground-truth
$BLENDER -noaudio --background --python generate.py -- --seed 0 --task render -g desert simple --input_folder outputs/helloworld/fine --output_folder outputs/helloworld/frames -p render.render_image_func=@flat/render_image
生成blend如下:
生成图像如下:
也可以一键生成图片
python -m tools.manage_datagen_jobs --output_folder outputs/hello_world --num_scenes 1 --specific_seed 0
--configs desert simple --pipeline_configs local_16GB monocular blender_gt --pipeline_overrides LocalScheduleHandler.use_gpu=False
一键生成视频
python -m tools.manage_datagen_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 trailer high_quality_terrain
很可惜,电脑太拉,跑不动,没有完整跑完,但是可以看看官方的视频
电脑配置强的同学可以点个关注,尝试看看