Mitsuba+AirSim 安装

Mitsuba安装

环境配置:

1. python 3.6
2. VS2019
3. Scons 3.0
4. Mitsuba 1(0.6)

以下是安装步骤

Step 1 拉取Mitsuba

拉取 mitsuba分支,并选择mitsuba下scons-python3子分支

1、git clone https://github.com/mitsuba-renderer/mitsuba.git
2、git checkout scons-python3

Step 2 安装Scons

不要直接使用pip install scons,因为这个命令会安装最新的scons,可能会发生编译错误,这里我参考issues中一位前辈的成功案例这里,选择安装 scons 3.0版本

activate conda_env  #激活你的虚拟环境
pip install scons=3.0 -i https://pypi.tuna.tsinghua.edu.cn/simple   # 使用源可以加快安装速度

Step 3 编译

编译时,为避免出现各种错误,使用x64 native tools command prompt for vs 2019命令行工具,该工具在windows系统左下角可以输入 x64等关键词找到。(建议在安装scons这一步就可以使用上述命令行

打开 命令行工具后,定位到mistuba文件夹,然后激活conda虚拟环境。接着直接使用命令即可完成编译

scons

Step 4

编译完成后,会生成一个dist文件夹,里面有mitsuba.exemisgui.exe,但是后者还运行不了,这时需要安装QT5,具体详情可以参考这里

在查看issues时,发现有人把编译好的dist文件共享出来,下载下来后发现还能用,参考这里,下载地址是这里

参考资料

Mitsuba 2的安装

参考:https://zhuanlan.zhihu.com/p/359008593

遇到最大的问题就是git submodule update --init --recursive,在开启代理的情况下,使用git clone https:拉取代码会出错。关闭代理就不会出现这个问题,但是容易超时。为此,我将mitsuba文件夹中.gitmoduleshttps:修改成git@github.com(即ssh形式),然后就可以拉取成功了。如果后续还会出现错误,可以尝试关闭代理,然后再执行命令git submodule update --init --recursive

在python中使用mitsuba2时候,要改变mitsuba中的variants,即打开mitsuba.conf在其xx行添加以下几行(注意不要超过5个,否则编译过程会非常慢):

packet_rgb,
packet_spectral, // python使用以上两个
gpu_rgb,
gpu_autodiff_rgb,
gpu_autodiff_spectral, // 如果用gpu渲染,那么就只用上面几个

添加完后直接使用命令编译

cmake -G "Visual Studio 16 2019" -A x64

会报以下错误

CMake Error at :
  No CUDA toolset found.

为解决该问题,查询这里资料可知。但是如果要加入gpu可微分的约束,那么就需要VS2019支持cuda编译,具体操作如下,将目录 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\visual_studio_integration\MSBuildExtensions中的中的四个文件复制到xxx\Microsoft Visual ,Studio\2019\MSBuild\Microsoft\VC\v160\BuildCustomizations,这样cmake就能使用cuda编译。(注意VS2017则不存在这个问题,而且BuildCustomizations的位置也与VS2019也不一样)

注意!!!!:不要自己拉ext里面的文件,否则会出现版本对不上的问题从而导致cmake出错。我遇到的就是libpng编译没通过的问题,问题大概是

set_prop(TARGET, png16) png16报错

一番查找过后才发现,是因为libpng目录中的cmake文件没有png16,而通过recursive方式下载的文件里面有png16。

针对这个问题,有另一种解决思路:利用git回滚

比如说针对libpng @ 7f4528d,在利用git clone 拉取libpng以后,使用以下命令,可完成版本的更换

>> cd libpng
>> git reset --hard 7f4528d

最终就可以生成mitsuba.sln文件了(由于我用的RTX3070,cuda11.1,所以没法完成编译,因此先暂时不用gpu的配置了)

接着,别用右键用vs2019打开。要先打开vs2019,然后打开项目或解决方案

最新!!!完成安装

系统参数:

1、先按照参考资料1拉取github仓库

2、如果要使用gpu,好像需要下载optix,去官网下载就好了。下载完后,安装好。

3、在目录mitsuba2/resource/ptx/编译Makefile,这里面需要指定刚刚下载好的optix目录地址

mts_include_folder = ../../include
mts_shape_folder   = ../../src/shapes/optix
mts_optix_main     = ../../src/librender/optix/optix_rt.cu

all: optix_rt.ptx

optix_rt.ptx: $(mts_optix_main) $(mts_include_folder)/* $(mts_shape_folder)/*
	nvcc $(mts_optix_main) \
		 -I $(mts_include_folder) -I $(mts_shape_folder) -I /opt/optix-7.0.0/include/ \
		 -O3 -gencode arch=compute_61,code=compute_61 --ptx

clean:
	rm -f optix_rt.ptx
	
============================
将-I /opt/optix-7.0.0/include/ 修改成-I "C:/ProgramData/NVIDIA Corporation/OptiX SDK 7.0.0/include"
然后将-O3 -gencode arch=compute_61,code=compute_61 --ptx 中的结构改成(根据使用的显卡改,RTX3070本来是86,但是86会报错,改80不会报这个错)
-O3 -gencode arch=compute_80,code=compute_80 --ptx
============================ 修改后版本================
mts_include_folder = ../../include
mts_shape_folder   = ../../src/shapes/optix
mts_optix_main     = ../../src/librender/optix/optix_rt.cu

all: optix_rt.ptx

optix_rt.ptx: $(mts_optix_main) $(mts_include_folder)/* $(mts_shape_folder)/*
	nvcc $(mts_optix_main) \
		 -I $(mts_include_folder) -I $(mts_shape_folder) -I "C:/ProgramData/NVIDIA Corporation/OptiX SDK 7.0.0/include" \
		 -O3 -gencode arch=compute_80,code=compute_80 --ptx

clean:
	rm -f optix_rt.ptx

修改完后,可能还会遇到cl.exe不存在的问题,如果用VS2019自带的x64命令行终端应该不会出现这个问题,我是将对应的cl.exe配置到环境变量中

E:\software\VS2017\Microsoft Visual Studio\2019\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64

配置完后,在powershell或其他终端(没尝试过其他终端)运行以下命令

bash Makefile

4、修改CMake文件,这里我选择的是CMake 3.21.0, 因为CMake 3.18.3不存在以下选项。在文件xxx\CMake\3.21.0\share\cmake-3.21\Modules\Compiler\NVIDIA-CUDA.cmake的91行左右有

  if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 9.0)
    if(CMAKE_CUDA_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.10.25017)
      set(CMAKE_CUDA14_STANDARD_COMPILE_OPTION "-std=c++14")
      set(CMAKE_CUDA14_EXTENSION_COMPILE_OPTION "-std=c++14")
    else()
      set(CMAKE_CUDA14_STANDARD_COMPILE_OPTION "")
      set(CMAKE_CUDA14_EXTENSION_COMPILE_OPTION "")
    endif()
  endif()
============================修改成
  if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 9.0)
    if(CMAKE_CUDA_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.10.25017)
      # set(CMAKE_CUDA14_STANDARD_COMPILE_OPTION "-std=c++14")
      # set(CMAKE_CUDA14_EXTENSION_COMPILE_OPTION "-std=c++14")
    else()
      set(CMAKE_CUDA14_STANDARD_COMPILE_OPTION "")
      set(CMAKE_CUDA14_EXTENSION_COMPILE_OPTION "")
    endif()
  endif()

5、完成以上步骤以后,(若使用conda虚拟环境,则激活虚拟环境,这一步很关键,因为好像只能为特定Python编译mitsuba2)使用以下命令编译库

cmake -G "Visual Studio 16 2019" -A x64

6、然后,可以选择打开VS2019,然后打开项目或解决方案的方式打开mitsuba.sln,将debug改成release模型进行运行,但是这种方式好像没法控制使用python的版本,会使用默认环境下的python,无法用特定虚拟环境中的python编译。因此,我采用了另外一种思路,即在mitsuba2目录下,使用以下命令运行

cmake --build ..(如果错误,就用一个点)

这样运行就不会出现错误了。

7、设置path,运行setpath

setpath

完成后,键入mitsuba,如果不报错就安装成功了。同时可以在同一个命令行下进入python终端,导入mitsuba,如果没报错就算是安装成功了。最后!!!如果要在python中使用,还需要将目录配置到环境变量中。

8、配置环境变量

向系统环境变量(Path)添加
F:\PythonPro\mitsuba2_gpu\dist;F:\PythonPro\mitsuba2_gpu\build\dist;
新建PYTHONPATH,然后添加
F:\PythonPro\mitsuba2_gpu\dist\python
F:\PythonPro\mitsuba2_gpu\build\dist\python

注意此时虽然在命令行里面能访问mitsuba,但是在pycharm里面还是访问不到mitsuba。

以上问题,重启电脑就解决了。

但是仍然存在问题:

mitsuba与其他库比如torch无法同时导入到项目里面,故而还是用不了,学习mitsuba3去了,放弃mitsuba2了(心累)。

参考:

1、https://www.cnblogs.com/FromATP/p/14920877.html
2、https://github.com/mitsuba-renderer/enoki/issues/70
3、https://github.com/mitsuba-renderer/mitsuba2/issues/569

注意:每次修改cmake文件以后,都需要将之前生成的文件删掉,以防修改不起作用。

续:Linux安装

系统配置:

1、Linux 18.04
2、CMAKE 3.14.7
3、ninja 1.8.2
4、driver 510.39.01
5、Tesla T4
7、cuda 11.1
8、python 3.9
9、GCC 8.4.0

1、跟着官方教程走

2、CMAKE版本太低的问题:重新安装CMAKE,参考这里。ninja可以使用默认安装版本。

3、在使用git clone --recursive https://github.com/mitsuba-renderer/mitsuba2拉取项目以后,多次使用以下命令拉取子模块

git submodule update --init --recursive

4、将resource中的mitsuba.conf.template复制到mitsuba2根目录下,并修改其名字为mitsuba.conf。 然后更改mitsuba.conf中enabled的设置,使其允许可微分渲染

   "enabled": [
        # The "scalar_rgb" variant *must* be included at the moment.
        "scalar_rgb",
        "scalar_spectral",
        "gpu_rgb",
        "gpu_autodiff_rgb"
    ],

5、使用以下步骤安装(依次运行)

mkdir build
cd build/
cmake -GNinja ..
ninja

# 上述命令如果没报错就直接下一步
source setpath.sh
python
import mitsuba as mi
如果能正确导入,则说明安装成功

在上述几个步骤中可能会遇到一些问题,比如说系统的lib文件与anconda中的lib文件冲突,网上建议是删掉anconda中对应的文件。

6、路径设置(p.s, 网上都说设置环境变量,却没说怎么设置,如果按setpath.sh输出的那种设置,系统还是找不到对应的mitsuba),以下是系统建议的路径

export PYTHONPATH="$MITSUBA_DIR/dist/python:$MITSUBA_DIR/$BUILD_DIR/dist/python:$PYTHONPATH"
export PATH="$MITSUBA_DIR/dist:$MITSUBA_DIR/$BUILD_DIR/dist:$PATH"

以上路径设置在~/.bashrc中以后,仍然没有效果。分析一通后发现,没有指定MITSUBA_DIR,系统不知道该位置在何处,因此在~/.bashrc中需要加上该地址。最终在~/.bashrc中添加以下几行

export MITSUBA_DIR="/xx/mitsuba2/build" # 其中xx为mitsuba2在你系统中的地址
export PYTHONPATH="$MITSUBA_DIR/dist/python:$MITSUBA_DIR/$BUILD_DIR/dist/python:$PYTHONPATH"
export PATH="$MITSUBA_DIR/dist:$MITSUBA_DIR/$BUILD_DIR/dist:$PATH"

完后,source ~/.bashrcmitsuba就能被系统识别了。

AirSim 安装

环境要求:

VS2019,SDK 安装默认与最新
Unreal Engine 4.27 

使用VS2019自带的developr command prompt for vs 2019进行编译

VS2019需要安装SDK, SDK4.8可用

参考:airsim详细教程(1):win10配置airsim仿真环境(2021.8.12更新) - 宁子安的文章 - 知乎 https://zhuanlan.zhihu.com/p/267321662

Tesla 系列(T4)显卡上安装AirSim遇到的一些问题

先说安装环境

VS2019
win10专业版
Epic(Unreal Engine 4.27)
需安装显卡驱动
最好安装.Net3.5和2.0框架

在使用T4显卡的win10系统上安装UE4.27会遇到以下问题:

运行引擎需要D3D11兼容GPU(功能级别11.0,着色器模型5.0)

参考这个博客,发现仅使用普通的英伟达显卡驱动无法启动UE仿真器。原因是Tesla原生驱动仅支持在TCC模式下工作,要使用UE仿真器(图形渲染器)需要WDDM模式。

为解决上述问题,需要安装vGPU驱动,可以使用以下的链接下载对应的vGPU驱动

https://cloud.google.com/compute/docs/gpus/grid-drivers-table?hl=zh-cn

我使用463.15_grid_win10_server2016_server2019_64bit_international.exe后,发现可以打开UE4。(注意我得系统是win10,不是server系统,但好像不影响使用)。

后续问题参考参考:airsim详细教程(1):win10配置airsim仿真环境(2021.8.12更新) - 宁子安的文章 - 知乎 https://zhuanlan.zhihu.com/p/267321662

Table of Contents