- Windows is recommended though porting is possible
- Frame system
- Common description
- a (7,) pose always represent (x, y, z, qx, qy, qz, qw)
obj.summary()
is used to generate a json file describing its behavior
- Unity frame: (-1, 7)
- Recorded directly from MIV_XROrigin, loaded by PoseFeeder
- O3d frame = Open3D frame:
- Anchored at Open3D coordinate system
- Conversion between frames are listed in Common.py
- Common description
- Blind streaming
- CamPlace.py: generate candidates
- diffCalc.m: calculate derivatives given the equation for optimal number of candidates
- Exp.py: core Exp class, implement most of the details
- ExpMain.py: switch script for setting different type of works/experiment for Exp class
- Yuv.py: Yuv class for fast data retrieval
- Exp_miv_util.py: inherit from old Exp_miv_util file
- contains some utility functions for trans-coding/pose truncation
- Exp_unitTest.py: for testing each function, code not organized
- Exp_unitTest_Runner.py: running a specific unitTest function
- Exp_unitTest_unitTest_ComplextAngleMean.py: not developement, for complext angle mean (replaced by average quaternion)
- Experiment scripts
- Exp_AllCadidndates.py: Cmd line tool to generate/prepare(convert to YUV)/prune(Reduce depth file size) candidates
- Exp_ByWorks_IXR.py: Run experiments for IXR candidate generators and all solvers
- Exp_ByWorks.py: Run experiments for MM candidate generator and all solvers
- Exp_Gen.py: Default parameters
- Exp_filterPureExp.py: move pure exp directory to another directory
- Exp_truncatePose.py: truncate poses
- Exp_encodeSourceView.py: encode source view in different ways
- Exp_encodeSummary.py: collect encoded data to statistic files
- encode_merge.csv:
- not used in paper
- encode_merge_separate.csv:
,scene,cddDir,type,group,viewId,bytes,path,cspPolicy,windowSize,psPolicy,m,h,placePolicy
- encode_merge.csv:
- vmaf.exe: for running vmaf and objective metrics
- RVS.exe: complied binary for RVS synthesizer
- Paper
- Paper_number_check.py: check paper numbers are correct
- Paper_disocclusion_gen.py: visualize disocclusion and generate its figures
- Paper_figGen.py: generate paper figures
- encode_merge_separate_stat.json:
- example_config_file_rvs.json: example configuration file for RVS synthesizer
- obj_metrics.json: j[quality metrics][group ount] for ploting correlation between optimization values and metrics
- stat_time.json: statistic for component runtime
- TMM unit test
- TMM_MIV_TestSequence_Gen.py: generate coarse pose for MIV test
- TMM_MIV_TestSequence_Convert.py: generate source views for MIV testb
- TMM_MIV_TestSequence_DepthVerify.py: visualize depth from unity
- Others are self-explanatory
- Unity project
- TMM_URP
- Paper related
- disocculusion_gen_dir: generate disocclusion example figure
- figs: figures used in paper
- nmslplot: code by YC for modified plots
- obj: 3D meshes exported from Unity
- Reconstruction: reconstructed scene after Structure-from-Motion
- Code related
- Trace_Raw: complete trace collected from 16 subjects (truncate them before use)
- *.py: see the document inside each of them
$ svn co svn://snoopy.cs.nthu.edu.tw/ext/vr/doc_TMM22_Code
- Install conda (suggest cuda 11.7)
- Download the installer
- Create conda environment in Anaconda Prompt
$ conda env create -f windows_env.yml
- Remove torch-associated packages after dump conda environment to a file
conda activate tmm
before running any code- Install pytorch (suggest 1.13.1) manually (choose correct platform and cuda version)
- Download VMAF releases
- Install RVS
- Clone from SM's fork instead of original one
- Remove duplicated file I/O for number of input frame = 1
- Install OpenCV
- Download OpenCV for Windows
- Let {opencv} be the directory containing OpenCVConfig.cmake, add {opencv}/build to PATH
- Install Glm
- Download glm, and extract it to a directory {dirGlm}
- add {dirGlm}/cmake to PATH'
- Install Visual Studio (VS)
- Install Visual studio installer, remember to check C++related packages
- Change to the cloned RVS github directory, and open a Developer Command Prompt for Windows terminal
mkdir build ; cd build
cmake -DWITH_OPENGL=On ..
- Check output from
$ cmake -DWITH_OPENGL=On ..
- Runtime library RVS is going to use F(from output):
-- OpenCV ARCH: XXX ; -- OpenCV RUNTIME: vcXX ;
- If Cmake complains that OpenCV does not match your computer architecture
- Download OpenCV source code, called {OpenCVGit}
cd {OpenCVGit} ; mkdir build ; cd build ; cmake ..
- Open OpenCV.sln and build
- Add {OpenCVGit}/build to PATH
- Runtime library RVS is going to use F(from output):
- Open build/RVS.sln and click build in VS
- Run {buildType}/RVSUnitTest.exe to unit test
- If it complains XXX.dll not found, check if the associated file is in PATH
- Copy {buildType}/RVS.exe to the TMM project folder
- Clone from SM's fork instead of original one
- Run any *.py in a Anaconda Prompt
- Truncate pose trajectories to a directory
- Prepare for ground truth novel view
- Set Up XR/VR Environment
Do not create an empty project and make it a VR one. Follow the template to save time for other settings
- Download XR Template
- Setup XR project (ep. 1)
- How to Turn on Preview Package Access
- This is mandotory for using XR / XR Interaction Toolkit
- How to Install a Unity Registry
- How to Turn on Preview Package Access
- Install XR Interaction Toolkit
- Install SteamVR plugin
- Otherwise Unity will not be triggered in SteamVR
- Drag TMM_URP/Asset/Prefabs/MIV_XROrigin to capture the hmd motion
- Set outputCsv to where the output should be written
- Drag TMM_URP/Asset/Prefabs/MIV_XROriginVerify to verify the hmd motion
- Set inputCsv to where the outputCsv
- Download assets from Unity Asset Store
- Free Sci-Fi Office Pack, Furnished Cabin
- Change display resolution
- Default 960x540
- Drag TMM_URP/Asset/Prefabs/MIV_Main into the scene to capture the source/novel views
- Set LoadTracePrefix to input directory that has {cameraNamePrefix}_{count}.csv
- Check isCapDepth if depth is needed
- Depth is in raw format (HxWx4) floating points, mapping [0, 1000] to [0, 1]
- Set outputDir to where the rgb and depth files are going to be stored
- Obj Exporter
- If the scene has any prefabs or prefab variants, right click > prefab > unpack completely before exporting
- ScifiOfficeLite (Test pass)
- Two small rooms
- Demo
- position = (2.35, 1, 35) (center of the bigger room)
- position = (2.35, 1, 45) (center of the smaller room)
- FurnishedCabin (Test pass)
- Living room, bedroom, toilet (simple texture)
- Demo
- position = (-1, 1, -2)
- github
- Follow the instruction in github
- Reconstruct_CollectSV.py: collect source views for reconstruction
- Reconstruct_Trans.py: transform reconstructed point cloud to align with ground truth
- Using XR to record motion (ep. 4)
- Replace XRRig with XROrigin (newer SDK)
- XROrigin
- Target framerate
- Use Exp.makeTargetViews() to convert pngs to yuv