zoukankan      html  css  js  c++  java
  • Win10 mitsuba2.0 安装踩坑记

    前言

    徒刑学大作业要用mitsuba,这种一看就很耗CPU的东西ATP是一点儿也不想用虚拟机弄,于是就决定直接在Win上装一个。

    果然配环境配多了不利于身体健康,ATP捣鼓了一晚上血压蹭蹭地涨,气得差点把电脑砸了(一拳打烂屏幕.gif),不过最后还是搞好了,所以ATP决定发一个博客记录一下这个历史时刻,顺便也给后来的人一点前车之鉴。

    参考了:

    正文

    在开始搞所有东西之前,可以先确保一下大前提:

    • CMake已经装了。这个好装,百度一下即可。
    • Python有较新版本,ATP用的3.7,反正import mitsuba是没问题,具体代码还没写不知道,但应该问题不大
    • Visual Studio 2019。重中之重,让ATP血压飙升的罪魁祸首。

    第一步:从github上下载mitsuba2及其子模块

    上个github太难了155551,直接去参考这篇CSDN叭,人家讲的挺详细的。

    官网给的指引是:

    git clone --recursive https://github.com/mitsuba-renderer/mitsuba2
    

    这个recursive是非常重要的,因为它确保下载的时候除了主模块mitsuba2,里面要用的一些子模块(都存在mitsuba2/ext文件夹里了)以及子模块的子模块都递归下载了。

    但问题是github目前访问非常难,ATP换了两个tz都不大行,老是报什么fatal error啦超时啦访问失败啦这些的。有时候它突然好一小会儿然后下载到一半又不行了,就很生气。

    根据官网,如果成功下载了主模块但子模块没下载好,可以用下面的命令更新子模块:

    git submodule update --init --recursive
    

    ATP搞的时候其实发现手动下.zip文件是很顺畅的,但不知道能不能这样手动下载解压然后自己去放到正确的位置上。ATP反正没心情试验了,或许有勇士试验一下(?)

    不过ATP还是要控诉为什么助教不直接下好了把包给我们1551,反正每个学期大作业都差不多,这得能省多少事儿啊((

    第二部:choosing variants

    这一步官网上有,但网上一些教程里没有。ATP合理推测他们都只想用c++写。如果只用c++写确实不需要额外配置这一步。但如果你像ATP一样想试试用python调mitsuba库,保险起见还是按官网上的设置一下吧

    打开mitsuba2 esources目录,找到一个mitsuba.conf.template文件,把它复制到mitsuba目录下并改名为mitsuba.conf。

    然后打开这个mitsuba.conf,在第70行左右找到"enabled"这一项。这就是要设置的地方,别的都不用改。初始这块内容是这样的:

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

    如果你只是想用python import mitsuba并且不考虑GPU,那么直接在里面加一项“packet_rgb”或者“packet_spectral”就可以了。这两个具体的区别请参考官方文档。另外更多的可选variants也请参考官方文档。

    文档里指出,这个enabled里面添加的variant数量与编译时间和内存使用量成正比,因此不建议包含超过五个variants。ATP只加了一个packet_rgb。

    另外,文档最后说:

    If you plan to use Mitsuba from Python, we recommend adding one of packet_rgb or packet_spectral for CPU rendering, or one of gpu_autodiff_rgb or gpu_autodiff_spectral for differentiable GPU rendering.

    这也是ATP为什么要捣鼓这个东西的原因。跟着它说的做总不会错叭。。。

    第三步:编译,得到sln,并生成exe

    接下来只需要在mitsuba目录下按照文档下一步来运行:

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

    ATP是看到这里的“Visual Studio 16 2019”才悲哀地意识到,它的电脑上装的还是VS 2017

    (然后这个狗VS,安装新版本的时候竟然还不知道自觉把旧版本卸了,连个“覆盖旧版本”的选项都不给,纯恶心兄弟???)

    运行完cmake以后,在mitsuba文件夹下会有一个叫mitsuba.sln的。用Visual Studio打开这个东西。

    这里ATP又触发了一个怪bug,如果直接双击mitsuba.sln文件,它倒是会默认自动用VS打开并且加载,但过一会儿竟然报了个错,说“xxx.vcxproj error: 没有安装该项目的应用程序”

    如果你也出现了这个问题,只需要先打开空白的Visual Studio,然后在首页选择“打开项目或解决方案”,再打开.sln文件就可以了。

    (ATP在写博客的时候本来想复现一下刚才的bug,但这次直接双击.sln文件后,它竟然毫无问题地打开了,也不知道是怎么回事)

    等所有东西加载完成后,把菜单栏下面的一个选项从“Debug”调成“Release”,然后生成解决方案。

    (这一步巨慢而且巨占CPU,ATP在跑这一步的时候打个字都是卡的,暴躁值++,wdnmd Visual Studio)

    此时在mitsubadist文件夹下会有一个mitsuba.exe。说明编译完成了。

    (cmake后面的这坨过程在官网上用一句“proceed building as usual from within Visual Studio”带过了,对ATP这种不怎么用VS的也太不友好了x)

    第四步:设置环境变量

    按照官网的说法,只需要在mitsuba文件夹下运行setpath这条命令就可以了。

    ATP试了一下确实可以,运行setpath以后,如果(在同一个cmd里)随便找个地方这样运行:

    > mitsuba
    

    即:直接输入mitsuba命令,不带什么./或者.exe之类的。

    如果它输出了一大串帮助信息,而不是报错“mitsuba不是批处理文件也不是blabla”这种,那么就安装成功了。

    另外,也可以测试一下,如果(在同一个cmd里)打开python,输入import mitsuba,没有报什么找不到模块的错,那说明前面所有步骤至少是没问题的。

    但问题就是这种设置path的方法是临时的,就是你关了cmd重开以后它就失效了。

    ATP研究了一下它那个设置环境变量的东西是怎么写的。虽然mitsuba目录下有三个名字叫setpath的文件,但我们在windows下只需要关注setpath.bat:

    @echo off
    
    REM ***************************************************************
    REM * This script adds Mitsuba to the current path on Windows.
    REM * It assumes that Mitsuba is either compiled within the 
    REM * source tree or within a subdirectory named 'build'.
    REM ***************************************************************
    
    set MITSUBA_DIR=%~dp0
    set MITSUBA_DIR=%MITSUBA_DIR:~0,-1%
    set PATH=%PATH%;%MITSUBA_DIR%dist;%MITSUBA_DIR%uilddist
    set PYTHONPATH=%PYTHONPATH%;%MITSUBA_DIR%distpython;%MITSUBA_DIR%uilddistpython
    
    

    上面这串东西它大概的意思就是在PATH里添加mitsuba目录下的dist文件夹和builddist文件夹;在PYTHONPATH里添加distpython和uilddistpython。

    如果你不确定怎么添加才是正确的,只需要把setpath.bat的第一行那个“@echo off”去掉,然后再运行一次setpath命令。

    这样虽然还是临时添加,但这一次的区别是它把添加完成以后的PATH和PYTHONPATH变量都输出来了。

    新加的内容一定是在后面两行,找到那两行照着手动加进环境变量里就可以了。

    ATP参考了一下它输出来的内容,发现它是添加在“用户变量”而不是“系统变量”里(因为两边都有PATH这个东西,ATP纠结了一下到底该改哪边)。

    改完了以后再重新打开cmd,mitsuba这个命令就可以随便用了,python代码也能引用模块了。


    这样环境应该就是配好了,如果后面写代码的时候发现什么问题ATP再来更新。

  • 相关阅读:
    观察者模式
    饿汉单例模式 and 懒汉单例模式
    解决hash冲突之分离链接法
    bat处理文件
    使用json-org包实现POJO和json的转换
    并发修改异常(ConcurrentModificationException)
    封装特效记录--持续更新
    vue loading组件
    vue授权页面登陆之后返回之前的页面
    vue 路由权限
  • 原文地址:https://www.cnblogs.com/FromATP/p/14920877.html
Copyright © 2011-2022 走看看