Jakub Kropacek 9b1342122b new file: i/IOTK/IOTK-1.2.2-intel-2021a.eb
new file:   i/IRODS/IRODS-0.7.3.eb
	new file:   l/libxc/libxc-5.1.5-intel-2020a.eb
	new file:   n/NodeODM/NodeODM-2.2.0-GCCcore-11.3.0.eb
	new file:   o/ODM/ODM-2.8.7/.dockerignore
	new file:   o/ODM/ODM-2.8.7/.github/workflows/publish-docker-and-wsl.yaml
	new file:   o/ODM/ODM-2.8.7/.github/workflows/publish-docker-gpu.yaml
	new file:   o/ODM/ODM-2.8.7/.github/workflows/publish-snap.yml
	new file:   o/ODM/ODM-2.8.7/.github/workflows/publish-windows.yml
	new file:   o/ODM/ODM-2.8.7/.github/workflows/test-build-prs.yaml
	new file:   o/ODM/ODM-2.8.7/.gitignore
	new file:   o/ODM/ODM-2.8.7/.gitmodules
	new file:   o/ODM/ODM-2.8.7/CNAME
	new file:   o/ODM/ODM-2.8.7/CONTRIBUTING.md
	new file:   o/ODM/ODM-2.8.7/Dockerfile
	new file:   o/ODM/ODM-2.8.7/LICENSE
	new file:   o/ODM/ODM-2.8.7/README.md
	new file:   o/ODM/ODM-2.8.7/SuperBuild/CMakeLists.txt
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-Ceres.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-Entwine.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-FPCFilter.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-GFlags.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-Hexer.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-LASzip.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-MvsTexturing.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-Obj2Tiles.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-OpenCV.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-OpenMVS.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-OpenSfM.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-PCL.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-PDAL.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-PyPopsift.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/External-Untwine.cmake
	new file:   o/ODM/ODM-2.8.7/SuperBuild/cmake/ExternalProject-Setup.cmake
	new file:   o/ODM/ODM-2.8.7/VERSION
	new file:   o/ODM/ODM-2.8.7/code_of_conduct.md
	new file:   o/ODM/ODM-2.8.7/configure.py
	new file:   o/ODM/ODM-2.8.7/configure.sh
	new file:   o/ODM/ODM-2.8.7/console.bat
	new file:   o/ODM/ODM-2.8.7/contrib/blender/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/blender/common.py
	new file:   o/ODM/ODM-2.8.7/contrib/blender/odm_photo.py
	new file:   o/ODM/ODM-2.8.7/contrib/blender/odm_video.py
	new file:   o/ODM/ODM-2.8.7/contrib/blender/photo_360.blend
	new file:   o/ODM/ODM-2.8.7/contrib/blender/photo_vr.blend
	new file:   o/ODM/ODM-2.8.7/contrib/grass/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/grass/odm_grass.py
	new file:   o/ODM/ODM-2.8.7/contrib/mergepreview/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/mergepreview/mergepreview.py
	new file:   o/ODM/ODM-2.8.7/contrib/ndvi/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/ndvi/agricultural_indices.py
	new file:   o/ODM/ODM-2.8.7/contrib/ndvi/ndvi.py
	new file:   o/ODM/ODM-2.8.7/contrib/ndvi/rename_sentera_agx710_multispectral_tif.py
	new file:   o/ODM/ODM-2.8.7/contrib/orthorectify/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/orthorectify/orthorectify.py
	new file:   o/ODM/ODM-2.8.7/contrib/orthorectify/run.sh
	new file:   o/ODM/ODM-2.8.7/contrib/pc2dem/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/pc2dem/pc2dem.py
	new file:   o/ODM/ODM-2.8.7/contrib/resize/README.md
	new file:   o/ODM/ODM-2.8.7/contrib/resize/requirements.txt
	new file:   o/ODM/ODM-2.8.7/contrib/resize/resize.py
	new file:   o/ODM/ODM-2.8.7/contrib/shell/odm_exif2utm.sh
	new file:   o/ODM/ODM-2.8.7/contrib/visveg/readme.md
	new file:   o/ODM/ODM-2.8.7/contrib/visveg/vegind.py
	new file:   o/ODM/ODM-2.8.7/docker/README
	new file:   o/ODM/ODM-2.8.7/docker/g++
	new file:   o/ODM/ODM-2.8.7/docker/gcc
	new file:   o/ODM/ODM-2.8.7/docs/issue_template.md
	new file:   o/ODM/ODM-2.8.7/gpu.Dockerfile
	new file:   o/ODM/ODM-2.8.7/innosetup.iss
	new file:   o/ODM/ODM-2.8.7/licenses/libext_copyright.txt
	new file:   o/ODM/ODM-2.8.7/licenses/libx11_copyright.txt
	new file:   o/ODM/ODM-2.8.7/licenses/license.md
	new file:   o/ODM/ODM-2.8.7/odm_docker_readme.txt
	new file:   o/ODM/ODM-2.8.7/opendm/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/boundary.py
	new file:   o/ODM/ODM-2.8.7/opendm/camera.py
	new file:   o/ODM/ODM-2.8.7/opendm/cogeo.py
	new file:   o/ODM/ODM-2.8.7/opendm/concurrency.py
	new file:   o/ODM/ODM-2.8.7/opendm/config.py
	new file:   o/ODM/ODM-2.8.7/opendm/context.py
	new file:   o/ODM/ODM-2.8.7/opendm/cropper.py
	new file:   o/ODM/ODM-2.8.7/opendm/cutline.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/commands.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/bounds/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/bounds/types.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/bounds/utils.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/extra_dimensions/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/extra_dimensions/dimension.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/extra_dimensions/distance_dimension.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/extra_dimensions/extended_dimension.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/extra_dimensions/partition_dimension.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/grid/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/grid/builder.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/io/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/io/las_io.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/partition/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/partition/one_partition.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/partition/partition_plan.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/partition/quad_partitions.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/partition/selector.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/partition/surrounding_partitions.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/point_cloud.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/ground_rectification/rectify.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/merge.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/pdal.py
	new file:   o/ODM/ODM-2.8.7/opendm/dem/utils.py
	new file:   o/ODM/ODM-2.8.7/opendm/dls.py
	new file:   o/ODM/ODM-2.8.7/opendm/entwine.py
	new file:   o/ODM/ODM-2.8.7/opendm/gcp.py
	new file:   o/ODM/ODM-2.8.7/opendm/geo.py
	new file:   o/ODM/ODM-2.8.7/opendm/get_image_size.py
	new file:   o/ODM/ODM-2.8.7/opendm/gpu.py
	new file:   o/ODM/ODM-2.8.7/opendm/gsd.py
	new file:   o/ODM/ODM-2.8.7/opendm/io.py
	new file:   o/ODM/ODM-2.8.7/opendm/location.py
	new file:   o/ODM/ODM-2.8.7/opendm/log.py
	new file:   o/ODM/ODM-2.8.7/opendm/loghelpers.py
	new file:   o/ODM/ODM-2.8.7/opendm/mesh.py
	new file:   o/ODM/ODM-2.8.7/opendm/multispectral.py
	new file:   o/ODM/ODM-2.8.7/opendm/nvm.py
	new file:   o/ODM/ODM-2.8.7/opendm/ogctiles.py
	new file:   o/ODM/ODM-2.8.7/opendm/orthophoto.py
	new file:   o/ODM/ODM-2.8.7/opendm/osfm.py
	new file:   o/ODM/ODM-2.8.7/opendm/photo.py
	new file:   o/ODM/ODM-2.8.7/opendm/point_cloud.py
	new file:   o/ODM/ODM-2.8.7/opendm/progress.py
	new file:   o/ODM/ODM-2.8.7/opendm/pseudogeo.py
	new file:   o/ODM/ODM-2.8.7/opendm/remote.py
	new file:   o/ODM/ODM-2.8.7/opendm/report/dsm_gradient.png
	new file:   o/ODM/ODM-2.8.7/opendm/report/overlap_color_map.txt
	new file:   o/ODM/ODM-2.8.7/opendm/report/overlap_diagram_legend.png
	new file:   o/ODM/ODM-2.8.7/opendm/rollingshutter.py
	new file:   o/ODM/ODM-2.8.7/opendm/shots.py
	new file:   o/ODM/ODM-2.8.7/opendm/system.py
	new file:   o/ODM/ODM-2.8.7/opendm/thermal.py
	new file:   o/ODM/ODM-2.8.7/opendm/thermal_tools/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/thermal_tools/dji_unpack.py
	new file:   o/ODM/ODM-2.8.7/opendm/thermal_tools/flir_unpack.py
	new file:   o/ODM/ODM-2.8.7/opendm/thermal_tools/thermal_utils.py
	new file:   o/ODM/ODM-2.8.7/opendm/tiles/color_relief.txt
	new file:   o/ODM/ODM-2.8.7/opendm/tiles/gdal2tiles.py
	new file:   o/ODM/ODM-2.8.7/opendm/tiles/hsv_merge.py
	new file:   o/ODM/ODM-2.8.7/opendm/tiles/tiler.py
	new file:   o/ODM/ODM-2.8.7/opendm/types.py
	new file:   o/ODM/ODM-2.8.7/opendm/utils.py
	new file:   o/ODM/ODM-2.8.7/opendm/vendor/__init__.py
	new file:   o/ODM/ODM-2.8.7/opendm/vendor/gdal_fillnodata.py
	new file:   o/ODM/ODM-2.8.7/portable.Dockerfile
	new file:   o/ODM/ODM-2.8.7/requirements.txt
	new file:   o/ODM/ODM-2.8.7/run.bat
	new file:   o/ODM/ODM-2.8.7/run.py
	new file:   o/ODM/ODM-2.8.7/run.sh
	new file:   o/ODM/ODM-2.8.7/snap/snapcraft.yaml
	new file:   o/ODM/ODM-2.8.7/snap/snapcraft21.yaml
	new file:   o/ODM/ODM-2.8.7/stages/__init__.py
	new file:   o/ODM/ODM-2.8.7/stages/dataset.py
	new file:   o/ODM/ODM-2.8.7/stages/mvstex.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_app.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_dem.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_filterpoints.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_georeferencing.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_meshing.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_orthophoto.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_postprocess.py
	new file:   o/ODM/ODM-2.8.7/stages/odm_report.py
	new file:   o/ODM/ODM-2.8.7/stages/openmvs.py
	new file:   o/ODM/ODM-2.8.7/stages/run_opensfm.py
	new file:   o/ODM/ODM-2.8.7/stages/splitmerge.py
	new file:   o/ODM/ODM-2.8.7/start-dev-env.sh
	new file:   o/ODM/ODM-2.8.7/test.sh
	new file:   o/ODM/ODM-2.8.7/tests/assets/.gitignore
	new file:   o/ODM/ODM-2.8.7/tests/assets/gcp_extras.txt
	new file:   o/ODM/ODM-2.8.7/tests/assets/gcp_latlon_south.txt
	new file:   o/ODM/ODM-2.8.7/tests/assets/gcp_latlon_valid.txt
	new file:   o/ODM/ODM-2.8.7/tests/assets/gcp_michigan_feet_valid.txt
	new file:   o/ODM/ODM-2.8.7/tests/assets/gcp_utm_north_valid.txt
	new file:   o/ODM/ODM-2.8.7/tests/assets/images/DJI_0002.JPG
	new file:   o/ODM/ODM-2.8.7/tests/assets/reconstruction.json
	new file:   o/ODM/ODM-2.8.7/tests/assets/sample.json
	new file:   o/ODM/ODM-2.8.7/tests/test_camera.py
	new file:   o/ODM/ODM-2.8.7/tests/test_gcp.py
	new file:   o/ODM/ODM-2.8.7/tests/test_osfm.py
	new file:   o/ODM/ODM-2.8.7/tests/test_remote.py
	new file:   o/ODM/ODM-2.8.7/tests/test_types.py
	new file:   o/ODM/ODM-2.8.7/vcpkg-requirements.txt
	new file:   o/ODM/ODM-2.8.7/win32env.bat
	new file:   o/ODM/ODM-2.8.7/winrun.bat
	new file:   o/ODM/v2.8.7.tar.gz
	new file:   y/Yambo/Yambo-5.1.0-intel-2020a.eb
	new file:   y/Yambo/Yambo-5.1.0-intel-2020a.eb.bak_20220715124556_61837
	new file:   y/Yambo/Yambo-5.1.0-intel-2021a.eb.old
	deleted:    y/Yambo/Yambo-5.1.0-intel-2021a.eb
2022-07-19 15:02:22 +02:00

114 lines
3.7 KiB
Python

#!/usr/bin/env python
# Renders a video.
# To generate a 360 panoramic video:
# blender -b photo_360.blend --python odm_video.py -- <project-path> <camera-waypoints.xyz> <number-of-frames>
import sys
import subprocess
import os
import bpy
from common import loadMesh
def main():
if len(sys.argv) < 7 or sys.argv[-4] != '--':
sys.exit('Please provide the ODM project path, camera waypoints (xyz format), and number of frames.')
projectHome = sys.argv[-3]
waypointFile = sys.argv[-2]
numFrames = int(sys.argv[-1])
loadMesh(projectHome +
'/odm_texturing/odm_textured_model_geo.obj')
waypoints = loadWaypoints(waypointFile)
numWaypoints = len(waypoints)
scene = bpy.data.scenes['Scene']
# create path thru waypoints
curve = bpy.data.curves.new(name='CameraPath', type='CURVE')
curve.dimensions = '3D'
curve.twist_mode = 'Z_UP'
nurbs = curve.splines.new('NURBS')
nurbs.points.add(numWaypoints-1)
weight = 1
for i in range(numWaypoints):
nurbs.points[i].co[0] = waypoints[i][0]
nurbs.points[i].co[1] = waypoints[i][1]
nurbs.points[i].co[2] = waypoints[i][2]
nurbs.points[i].co[3] = weight
nurbs.use_endpoint_u = True
path = bpy.data.objects.new(name='CameraPath', object_data=curve)
scene.objects.link(path)
camera = bpy.data.objects['Camera']
camera.location[0] = 0
camera.location[1] = 0
camera.location[2] = 0
followPath = camera.constraints.new(type='FOLLOW_PATH')
followPath.name = 'CameraFollowPath'
followPath.target = path
followPath.use_curve_follow = True
animateContext = bpy.context.copy()
animateContext['constraint'] = followPath
bpy.ops.constraint.followpath_path_animate(animateContext,
constraint='CameraFollowPath',
frame_start=0,
length=numFrames)
blendName = bpy.path.display_name_from_filepath(bpy.data.filepath)
fileName = projectHome + '/odm_video/odm_' + blendName.replace('photo', 'video')
scene.frame_start = 0
scene.frame_end = numFrames
render = scene.render
render.filepath = fileName + '.mp4'
render.image_settings.file_format = 'FFMPEG'
if(render.use_multiview):
render.image_settings.stereo_3d_format.display_mode = 'TOPBOTTOM'
render.image_settings.views_format = 'STEREO_3D'
render.views[0].file_suffix = ''
format3d = 'top-bottom'
else:
width = render.resolution_x
height = render.resolution_y
format3d = 'none'
render.resolution_x = 4096
render.resolution_y = 2048
render.ffmpeg.audio_codec = 'AAC'
render.ffmpeg.codec = 'H264'
render.ffmpeg.format = 'MPEG4'
render.ffmpeg.video_bitrate = 45000
bpy.ops.render.render(animation=True)
writeMetadata(fileName+'.mp4', format3d)
def loadWaypoints(filename):
waypoints = []
with open(filename) as f:
for line in f:
xyz = line.split()
waypoints.append((float(xyz[0]), float(xyz[1]), float(xyz[2])))
return waypoints
def writeMetadata(filename, format3d):
subprocess.run(['python',
'spatialmedia',
'-i',
'--stereo='+format3d,
filename,
filename+'.injected'])
# check metadata injector was successful
if os.path.exists(filename+'.injected'):
os.remove(filename)
os.rename(filename+'.injected', filename)
if __name__ == '__main__':
main()