diff options
Diffstat (limited to 'release')
165 files changed, 457 insertions, 1729 deletions
diff --git a/release/darwin/README.md b/release/darwin/README.md new file mode 100644 index 00000000000..f1f02543ff3 --- /dev/null +++ b/release/darwin/README.md @@ -0,0 +1,5 @@ +Buildbot Configuration +====================== + +Files used by Buildbot's `package-code-binaires` step for the darwin platform. + diff --git a/release/darwin/README.txt b/release/darwin/README.txt deleted file mode 100644 index 626ce8820ab..00000000000 --- a/release/darwin/README.txt +++ /dev/null @@ -1,55 +0,0 @@ - -macOS app bundling guide -======================== - -Install Code Signing Certificate --------------------------------- - -* Go to https://developer.apple.com/account/resources/certificates/list -* Download the Developer ID Application certificate. -* Double click the file and add to key chain (default options). -* Delete the file from the Downloads folder. - -* You will also need to install a .p12 public/private key file for the - certificate. This is only available for the owner of the Blender account, - or can be exported and copied from another system that already has code - signing set up. - -Find the codesigning identity by running: - -$ security find-identity -v -p codesigning - -"Developer ID Application: Stichting Blender Foundation" is the identity needed. -The long code at the start of the line is used as <identity> below. - -Setup Apple ID --------------- - -* The Apple ID must have two step verification enabled. -* Create an app specific password for the code signing app (label can be anything): -https://support.apple.com/en-us/HT204397 -* Add the app specific password to keychain: - -$ security add-generic-password -a <apple-id> -w <app-specific-password> -s altool-password - -When running the bundle script, there will be a popup. To avoid that either: -* Click Always Allow in the popup -* In the Keychain Access app, change the Access Control settings on altool-password - -Bundle ------- - -Then the bundle is created as follows: - -$ ./bundle.sh --source <sourcedir> --dmg <dmg> --bundle-id <bundleid> --username <apple-id> --password "@keychain:altool-password" --codesign <identity> - -<sourcedir> directory where built Blender.app is -<dmg> location and name of the final disk image -<bundleid> id on notarization, for example org.blenderfoundation.blender.release -<apple-id> your appleid email -<identity> codesigning identity - -When specifying only --sourcedir and --dmg, the build will not be signed. - -Example : -$ ./bundle.sh --source /data/build/bin --dmg /data/Blender-2.8-alpha-macOS-10.11.dmg --bundle-id org.blenderfoundation.blender.release --username "foo@mac.com" --password "@keychain:altool-password" --codesign AE825E26F12D08B692F360133210AF46F4CF7B97 diff --git a/release/darwin/blender.applescript b/release/darwin/blender.applescript deleted file mode 100644 index 130dc2eb64c..00000000000 --- a/release/darwin/blender.applescript +++ /dev/null @@ -1,18 +0,0 @@ -tell application "Finder" - tell disk "Blender" - open - set current view of container window to icon view - set toolbar visible of container window to false - set statusbar visible of container window to false - set the bounds of container window to {100, 100, 640, 472} - set theViewOptions to icon view options of container window - set arrangement of theViewOptions to not arranged - set icon size of theViewOptions to 128 - set background picture of theViewOptions to file ".background:background.tif" - set position of item " " of container window to {400, 190} - set position of item "blender.app" of container window to {135, 190} - update without registering applications - delay 5 - close - end tell -end tell diff --git a/release/darwin/bundle.sh b/release/darwin/bundle.sh deleted file mode 100755 index 6d8695a441d..00000000000 --- a/release/darwin/bundle.sh +++ /dev/null @@ -1,212 +0,0 @@ -#!/usr/bin/env bash -# -# Script to create a macOS dmg file for Blender builds, including code -# signing and notarization for releases. - -# Check that we have all needed tools. -for i in osascript git codesign hdiutil xcrun ; do - if [ ! -x "$(which ${i})" ]; then - echo "Unable to execute command $i, macOS broken?" - exit 1 - fi -done - -# Defaults settings. -_script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -_volume_name="Blender" -_tmp_dir="$(mktemp -d)" -_tmp_dmg="/tmp/blender-tmp.dmg" -_background_image="${_script_dir}/background.tif" -_mount_dir="/Volumes/${_volume_name}" -_entitlements="${_script_dir}/entitlements.plist" - -# Handle arguments. -while [[ $# -gt 0 ]]; do - key=$1 - case $key in - -s|--source) - SRC_DIR="$2" - shift - shift - ;; - -d|--dmg) - DEST_DMG="$2" - shift - shift - ;; - -b|--bundle-id) - N_BUNDLE_ID="$2" - shift - shift - ;; - -u|--username) - N_USERNAME="$2" - shift - shift - ;; - -p|--password) - N_PASSWORD="$2" - shift - shift - ;; - -c|--codesign) - C_CERT="$2" - shift - shift - ;; - --background-image) - _background_image="$2" - shift - shift - ;; - -h|--help) - echo "Usage:" - echo " $(basename "$0") --source DIR --dmg IMAGENAME " - echo " optional arguments:" - echo " --codesign <certname>" - echo " --username <username>" - echo " --password <password>" - echo " --bundle-id <bundleid>" - echo " Check https://developer.apple.com/documentation/security/notarizing_your_app_before_distribution/customizing_the_notarization_workflow " - exit 1 - ;; - esac -done - -if [ ! -d "${SRC_DIR}/Blender.app" ]; then - echo "use --source parameter to set source directory where Blender.app can be found" - exit 1 -fi - -if [ -z "${DEST_DMG}" ]; then - echo "use --dmg parameter to set output dmg name" - exit 1 -fi - -# Destroy destination dmg if there is any. -test -f "${DEST_DMG}" && rm "${DEST_DMG}" -if [ -d "${_mount_dir}" ]; then - echo -n "Ejecting existing blender volume.." - DEV_FILE=$(mount | grep "${_mount_dir}" | awk '{ print $1 }') - diskutil eject "${DEV_FILE}" || exit 1 - echo -fi - -# Copy dmg contents. -echo -n "Copying Blender.app..." -cp -r "${SRC_DIR}/Blender.app" "${_tmp_dir}/" || exit 1 -echo - -# Create the disk image. -_directory_size=$(du -sh ${_tmp_dir} | awk -F'[^0-9]*' '$0=$1') -_image_size=$(echo "${_directory_size}" + 400 | bc) # extra 400 need for codesign to work (why on earth?) - -echo -echo -n "Creating disk image of size ${_image_size}M.." -test -f "${_tmp_dmg}" && rm "${_tmp_dmg}" -hdiutil create -size "${_image_size}m" -fs HFS+ -srcfolder "${_tmp_dir}" -volname "${_volume_name}" -format UDRW "${_tmp_dmg}" -mode 755 - -echo "Mounting readwrite image..." -hdiutil attach -readwrite -noverify -noautoopen "${_tmp_dmg}" - -echo "Setting background picture.." -if ! test -z "${_background_image}"; then - echo "Copying background image ..." - test -d "${_mount_dir}/.background" || mkdir "${_mount_dir}/.background" - _background_image_NAME=$(basename "${_background_image}") - cp "${_background_image}" "${_mount_dir}/.background/${_background_image_NAME}" -fi - -echo "Creating link to /Applications ..." -ln -s /Applications "${_mount_dir}/Applications" -echo "Renaming Applications to empty string." -mv ${_mount_dir}/Applications "${_mount_dir}/ " - -echo "Running applescript to set folder looks ..." -cat "${_script_dir}/blender.applescript" | osascript - -echo "Waiting after applescript ..." -sleep 5 - -if [ ! -z "${C_CERT}" ]; then - # Codesigning requires all libs and binaries to be signed separately. - echo -n "Codesigning Python" - for f in $(find "${_mount_dir}/Blender.app/Contents/Resources" -name "python*"); do - if [ -x ${f} ] && [ ! -d ${f} ]; then - codesign --remove-signature "${f}" - codesign --timestamp --options runtime --entitlements="${_entitlements}" --sign "${C_CERT}" "${f}" - fi - done - echo ; echo -n "Codesigning .dylib and .so libraries" - for f in $(find "${_mount_dir}/Blender.app" -name "*.dylib" -o -name "*.so"); do - codesign --remove-signature "${f}" - codesign --timestamp --options runtime --entitlements="${_entitlements}" --sign "${C_CERT}" "${f}" - done - echo ; echo -n "Codesigning Blender.app" - codesign --remove-signature "${_mount_dir}/Blender.app" - codesign --timestamp --options runtime --entitlements="${_entitlements}" --sign "${C_CERT}" "${_mount_dir}/Blender.app" - echo -else - echo "No codesigning cert given, skipping..." -fi - -# Need to eject dev files to remove /dev files and free .dmg for converting -echo "Unmounting rw disk image ..." -DEV_FILE=$(mount | grep "${_mount_dir}" | awk '{ print $1 }') -diskutil eject "${DEV_FILE}" - -sleep 3 - -echo "Compressing disk image ..." -hdiutil convert "${_tmp_dmg}" -format UDZO -o "${DEST_DMG}" - -# Codesign the dmg -if [ ! -z "${C_CERT}" ]; then - echo -n "Codesigning dmg..." - codesign --timestamp --force --sign "${C_CERT}" "${DEST_DMG}" - echo -fi - -# Cleanup -rm -rf "${_tmp_dir}" -rm "${_tmp_dmg}" - -# Notarize -if [ ! -z "${N_USERNAME}" ] && [ ! -z "${N_PASSWORD}" ] && [ ! -z "${N_BUNDLE_ID}" ]; then - # Send to Apple - echo "Sending ${DEST_DMG} for notarization..." - _tmpout=$(mktemp) - echo xcrun altool --notarize-app --verbose -f "${DEST_DMG}" --primary-bundle-id "${N_BUNDLE_ID}" --username "${N_USERNAME}" --password "${N_PASSWORD}" - xcrun altool --notarize-app --verbose -f "${DEST_DMG}" --primary-bundle-id "${N_BUNDLE_ID}" --username "${N_USERNAME}" --password "${N_PASSWORD}" >${_tmpout} 2>&1 - - # Parse request uuid - _requuid=$(cat "${_tmpout}" | grep "RequestUUID" | awk '{ print $3 }') - echo "RequestUUID: ${_requuid}" - if [ ! -z "${_requuid}" ]; then - # Wait for Apple to confirm notarization is complete - echo "Waiting for notarization to be complete.." - for c in {20..0};do - sleep 600 - xcrun altool --notarization-info "${_requuid}" --username "${N_USERNAME}" --password "${N_PASSWORD}" >${_tmpout} 2>&1 - _status=$(cat "${_tmpout}" | grep "Status:" | awk '{ print $2 }') - if [ "${_status}" == "invalid" ]; then - echo "Got invalid notarization!" - break; - fi - - if [ "${_status}" == "success" ]; then - echo -n "Notarization successful! Stapling..." - xcrun stapler staple -v "${DEST_DMG}" - break; - fi - echo "Notarization in progress, waiting..." - done - else - cat ${_tmpout} - echo "Error getting RequestUUID, notarization unsuccessful" - fi -else - echo "No notarization credentials supplied, skipping..." -fi - -echo "..done. You should have ${DEST_DMG} ready to upload" diff --git a/release/datafiles/locale b/release/datafiles/locale -Subproject 5ab29b1331d2103dae634b987f121c4599459d7 +Subproject 2cef4877edc40875978c4e95322bb5193f5815b diff --git a/release/freedesktop/org.blender.Blender.appdata.xml b/release/freedesktop/org.blender.Blender.appdata.xml index f6d17834150..7a5a252e4ca 100644 --- a/release/freedesktop/org.blender.Blender.appdata.xml +++ b/release/freedesktop/org.blender.Blender.appdata.xml @@ -40,6 +40,25 @@ </screenshot> </screenshots> <releases> + <release version="2.93" date="2021-06-02"> + <description> + <p>New features:</p> + <ul> + <li>Mesh primitive nodes</li> + <li>Line Art</li> + <li>EEVEE Realistic depth of field and volumetrics</li> + <li>Spreadsheet editor</li> + </ul> + <p>Enhancements:</p> + <ul> + <li>Geometry nodes 22 new nodes and imrpoved attribute search</li> + <li>Mask loops, textures and patterns for sculpting</li> + <li>Grease pencil interpolate refactored and SVG and PDF support</li> + <li>Persistent Data rendering settings for Cycles</li> + <li>Video Sequencer Editor auto-proxy system</li> + </ul> + </description> + </release> <release version="2.92" date="2021-02-25"> <description> <p>New features:</p> diff --git a/release/freedesktop/snap/README.md b/release/freedesktop/snap/README.md new file mode 100644 index 00000000000..742b265ada6 --- /dev/null +++ b/release/freedesktop/snap/README.md @@ -0,0 +1,17 @@ +Snap Configuration +=================== + +Files used by Buildbot's `package-code-store-snap` and `deliver-code-store-snap` steps. + +Build pipeline snap tracks and channels + +``` + <track>/stable + - Latest stable release for the specified track + <track>/candidate + - Test builds for the upcoming stable release - *not used for now* + <track>/beta + - Nightly automated builds provided by a release branch + <track>/egde/<branch> + - Nightly or on demand builds - will also make use of branch +``` diff --git a/release/freedesktop/snap/README.txt b/release/freedesktop/snap/README.txt deleted file mode 100644 index 2e8822f32dc..00000000000 --- a/release/freedesktop/snap/README.txt +++ /dev/null @@ -1,38 +0,0 @@ - -Snap Package Instructions -========================= - -This folder contains the scripts for creating and uploading the snap on: -https://snapcraft.io/blender - - -Setup ------ - -This has only been tested to work on Ubuntu. - -# Install required packages -sudo apt install snapd snapcraft - - -Steps ------ - -# Build the snap file -python3 bundle.py --version 2.XX --url https://download.blender.org/release/Blender2.XX/blender-2.XX-x86_64.tar.bz2 - -# Install snap to test -# --dangerous is needed since the snap has not been signed yet -# --classic is required for installing Blender in general -sudo snap install --dangerous --classic blender_2.XX_amd64.snap - -# Upload -snapcraft push --release=stable blender_2.XX_amd64.snap - - -Release Values --------------- - -stable: final release -candidate: release candidates - diff --git a/release/freedesktop/snap/snapcraft.yaml.in b/release/freedesktop/snap/blender-snapcraft-template.yaml index eb3ef97eba8..882f9081c09 100644 --- a/release/freedesktop/snap/snapcraft.yaml.in +++ b/release/freedesktop/snap/blender-snapcraft-template.yaml @@ -10,12 +10,7 @@ description: | scientists, students, VFX experts, animators, game artists, modders, and the list goes on. - The standard snap channels are used in the following way: - - stable - Latest stable release. - candidate - Test builds for the upcoming stable release. - -icon: ../icons/scalable/apps/blender.svg +icon: @ICON_PATH@ passthrough: license: GPL-3.0 @@ -27,13 +22,14 @@ apps: command: ./blender-wrapper desktop: ./blender.desktop +base: core18 version: '@VERSION@' grade: @GRADE@ parts: blender: plugin: dump - source: @URL@ + source: @PACKAGE_PATH@ build-attributes: [keep-execstack, no-patchelf] override-build: | snapcraftctl build @@ -47,7 +43,7 @@ parts: - libxrender1 - libxxf86vm1 wrapper: - plugin: copy + plugin: dump source: . - files: - blender-wrapper: blender-wrapper + stage: + - ./blender-wrapper diff --git a/release/freedesktop/snap/bundle.py b/release/freedesktop/snap/bundle.py deleted file mode 100755 index c3ecc5af561..00000000000 --- a/release/freedesktop/snap/bundle.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import os -import pathlib -import subprocess - -parser = argparse.ArgumentParser() -parser.add_argument("--version", required=True) -parser.add_argument("--url", required=True) -parser.add_argument("--grade", default="stable", choices=["stable", "devel"]) -args = parser.parse_args() - -yaml_text = pathlib.Path("snapcraft.yaml.in").read_text() -yaml_text = yaml_text.replace("@VERSION@", args.version) -yaml_text = yaml_text.replace("@URL@", args.url) -yaml_text = yaml_text.replace("@GRADE@", args.grade) -pathlib.Path("snapcraft.yaml").write_text(yaml_text) - -subprocess.call(["snapcraft", "clean"]) -subprocess.call(["snapcraft", "snap"]) diff --git a/release/scripts/addons b/release/scripts/addons -Subproject 4fcdbfe7c20edfc1204c0aa46c98ea25354abcd +Subproject 27fe7f3a4f964b53af436c4da4ddea337eff0c7 diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib -Subproject 7d78c8a63f2f4b146f9327ddc0d567a5921b94e +Subproject 5a82baad9f986722104280e8354a4427d8e9eab diff --git a/release/scripts/modules/bl_previews_utils/bl_previews_render.py b/release/scripts/modules/bl_previews_utils/bl_previews_render.py index 979b47f7a14..51ea53c0eba 100644 --- a/release/scripts/modules/bl_previews_utils/bl_previews_render.py +++ b/release/scripts/modules/bl_previews_utils/bl_previews_render.py @@ -37,6 +37,9 @@ OBJECT_TYPES_RENDER = {'MESH', 'CURVE', 'SURFACE', 'META', 'FONT'} def ids_nolib(bids): return (bid for bid in bids if not bid.library) +def ids_nolib_with_preview(bids): + return (bid for bid in bids if (not bid.library and bid.preview)) + def rna_backup_gen(data, include_props=None, exclude_props=None, root=()): # only writable properties... @@ -313,8 +316,9 @@ def do_previews(do_objects, do_collections, do_scenes, do_data_intern): image = bpy.data.images[render_context.image, None] item = getattr(bpy.data, item_container)[item_name, None] image.reload() - item.preview.image_size = (RENDER_PREVIEW_SIZE, RENDER_PREVIEW_SIZE) - item.preview.image_pixels_float[:] = image.pixels + preview = item.preview_ensure() + preview.image_size = (RENDER_PREVIEW_SIZE, RENDER_PREVIEW_SIZE) + preview.image_pixels_float[:] = image.pixels # And now, main code! do_save = True @@ -451,15 +455,15 @@ def do_clear_previews(do_objects, do_collections, do_scenes, do_data_intern): bpy.ops.wm.previews_clear(id_type={'SHADING'}) if do_objects: - for ob in ids_nolib(bpy.data.objects): + for ob in ids_nolib_with_preview(bpy.data.objects): ob.preview.image_size = (0, 0) if do_collections: - for grp in ids_nolib(bpy.data.collections): + for grp in ids_nolib_with_preview(bpy.data.collections): grp.preview.image_size = (0, 0) if do_scenes: - for scene in ids_nolib(bpy.data.scenes): + for scene in ids_nolib_with_preview(bpy.data.scenes): scene.preview.image_size = (0, 0) print("Saving %s..." % bpy.data.filepath) diff --git a/release/scripts/modules/bpy/path.py b/release/scripts/modules/bpy/path.py index e9e9671cc35..1de4542e69e 100644 --- a/release/scripts/modules/bpy/path.py +++ b/release/scripts/modules/bpy/path.py @@ -198,6 +198,7 @@ def _clean_utf8(name): _display_name_literals = { ":": "_colon_", "+": "_plus_", + "/": "_slash_", } diff --git a/release/scripts/modules/rna_manual_reference.py b/release/scripts/modules/rna_manual_reference.py index 7e2d09efcd4..552f7eeb4f3 100644 --- a/release/scripts/modules/rna_manual_reference.py +++ b/release/scripts/modules/rna_manual_reference.py @@ -58,6 +58,7 @@ url_manual_mapping = ( ("bpy.types.fluiddomainsettings.sndparticle_combined_export*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-combined-export"), ("bpy.types.fluiddomainsettings.use_collision_border_bottom*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-use-collision-border-bottom"), ("bpy.types.fluiddomainsettings.vector_scale_with_magnitude*", "physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-vector-scale-with-magnitude"), + ("bpy.types.spacespreadsheet.display_context_path_collapsed*", "editors/spreadsheet.html#bpy-types-spacespreadsheet-display-context-path-collapsed"), ("bpy.types.fluiddomainsettings.use_collision_border_front*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-use-collision-border-front"), ("bpy.types.fluiddomainsettings.use_collision_border_right*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-use-collision-border-right"), ("bpy.types.cyclesobjectsettings.use_adaptive_subdivision*", "render/cycles/object_settings/adaptive_subdiv.html#bpy-types-cyclesobjectsettings-use-adaptive-subdivision"), @@ -66,16 +67,20 @@ url_manual_mapping = ( ("bpy.types.fluiddomainsettings.use_collision_border_left*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-use-collision-border-left"), ("bpy.types.rendersettings_simplify_gpencil_view_modifier*", "render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-gpencil-view-modifier"), ("bpy.types.brushgpencilsettings.use_settings_stabilizer*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-settings-stabilizer"), + ("bpy.types.colormanagedsequencercolorspacesettings.name*", "render/color_management.html#bpy-types-colormanagedsequencercolorspacesettings-name"), ("bpy.types.fluiddomainsettings.use_collision_border_top*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-use-collision-border-top"), ("bpy.types.gpencilsculptsettings.use_multiframe_falloff*", "grease_pencil/multiframe.html#bpy-types-gpencilsculptsettings-use-multiframe-falloff"), ("bpy.types.movietrackingsettings.use_keyframe_selection*", "movie_clip/tracking/clip/toolbar/solve.html#bpy-types-movietrackingsettings-use-keyframe-selection"), ("bpy.types.rendersettings.simplify_gpencil_antialiasing*", "render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-gpencil-antialiasing"), + ("bpy.types.spaceoutliner.use_filter_lib_override_system*", "editors/outliner/interface.html#bpy-types-spaceoutliner-use-filter-lib-override-system"), ("bpy.types.toolsettings.use_transform_pivot_point_align*", "scene_layout/object/tools/tool_settings.html#bpy-types-toolsettings-use-transform-pivot-point-align"), ("bpy.types.brush.show_multiplane_scrape_planes_preview*", "sculpt_paint/sculpting/tools/multiplane_scrape.html#bpy-types-brush-show-multiplane-scrape-planes-preview"), ("bpy.types.cyclesrendersettings.offscreen_dicing_scale*", "render/cycles/render_settings/subdivision.html#bpy-types-cyclesrendersettings-offscreen-dicing-scale"), ("bpy.types.fluiddomainsettings.sndparticle_bubble_drag*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-bubble-drag"), ("bpy.types.linestylegeometrymodifier_backbonestretcher*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/backbone_stretcher.html#bpy-types-linestylegeometrymodifier-backbonestretcher"), ("bpy.types.linestylegeometrymodifier_sinusdisplacement*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/sinus_displacement.html#bpy-types-linestylegeometrymodifier-sinusdisplacement"), + ("bpy.types.colormanageddisplaysettings.display_device*", "render/color_management.html#bpy-types-colormanageddisplaysettings-display-device"), + ("bpy.types.colormanagedviewsettings.use_curve_mapping*", "render/color_management.html#bpy-types-colormanagedviewsettings-use-curve-mapping"), ("bpy.types.fluiddomainsettings.color_ramp_field_scale*", "physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-color-ramp-field-scale"), ("bpy.types.fluiddomainsettings.use_adaptive_timesteps*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-use-adaptive-timesteps"), ("bpy.types.fluiddomainsettings.use_dissolve_smoke_log*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-use-dissolve-smoke-log"), @@ -117,6 +122,8 @@ url_manual_mapping = ( ("bpy.types.brush.use_cloth_pin_simulation_boundary*", "sculpt_paint/sculpting/tools/cloth.html#bpy-types-brush-use-cloth-pin-simulation-boundary"), ("bpy.types.brushgpencilsettings.show_fill_boundary*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-show-fill-boundary"), ("bpy.types.brushgpencilsettings.use_default_eraser*", "grease_pencil/modes/draw/tools/erase.html#bpy-types-brushgpencilsettings-use-default-eraser"), + ("bpy.types.colormanagedsequencercolorspacesettings*", "render/color_management.html#bpy-types-colormanagedsequencercolorspacesettings"), + ("bpy.types.colormanagedviewsettings.view_transform*", "render/color_management.html#bpy-types-colormanagedviewsettings-view-transform"), ("bpy.types.cyclesrendersettings.camera_cull_margin*", "render/cycles/render_settings/simplify.html#bpy-types-cyclesrendersettings-camera-cull-margin"), ("bpy.types.fluiddomainsettings.export_manta_script*", "physics/fluid/type/domain/cache.html#bpy-types-fluiddomainsettings-export-manta-script"), ("bpy.types.fluiddomainsettings.fractions_threshold*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-fractions-threshold"), @@ -164,6 +171,7 @@ url_manual_mapping = ( ("bpy.types.rigidbodyconstraint.breaking_threshold*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-breaking-threshold"), ("bpy.types.spacedopesheeteditor.show_pose_markers*", "animation/markers.html#bpy-types-spacedopesheeteditor-show-pose-markers"), ("bpy.types.spaceoutliner.use_filter_object_camera*", "editors/outliner/interface.html#bpy-types-spaceoutliner-use-filter-object-camera"), + ("bpy.types.spaceoutliner.use_filter_object_others*", "editors/outliner/interface.html#bpy-types-spaceoutliner-use-filter-object-others"), ("bpy.types.toolsettings.proportional_edit_falloff*", "editors/3dview/controls/proportional_editing.html#bpy-types-toolsettings-proportional-edit-falloff"), ("bpy.types.toolsettings.use_edge_path_live_unwrap*", "modeling/meshes/tools/tool_settings.html#bpy-types-toolsettings-use-edge-path-live-unwrap"), ("bpy.types.toolsettings.use_gpencil_draw_additive*", "grease_pencil/modes/draw/introduction.html#bpy-types-toolsettings-use-gpencil-draw-additive"), @@ -192,12 +200,14 @@ url_manual_mapping = ( ("bpy.types.materialgpencilstyle.use_fill_holdout*", "grease_pencil/materials/properties.html#bpy-types-materialgpencilstyle-use-fill-holdout"), ("bpy.types.particlesettings.use_parent_particles*", "physics/particles/emitter/render.html#bpy-types-particlesettings-use-parent-particles"), ("bpy.types.rigidbodyconstraint.solver_iterations*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-solver-iterations"), + ("bpy.types.spaceoutliner.use_filter_lib_override*", "editors/outliner/interface.html#bpy-types-spaceoutliner-use-filter-lib-override"), ("bpy.types.spaceoutliner.use_filter_object_empty*", "editors/outliner/interface.html#bpy-types-spaceoutliner-use-filter-object-empty"), ("bpy.types.spaceoutliner.use_filter_object_light*", "editors/outliner/interface.html#bpy-types-spaceoutliner-use-filter-object-light"), ("bpy.types.spacesequenceeditor.proxy_render_size*", "video_editing/preview/sidebar.html#bpy-types-spacesequenceeditor-proxy-render-size"), ("bpy.types.spacesequenceeditor.show_strip_offset*", "video_editing/sequencer/navigating.html#bpy-types-spacesequenceeditor-show-strip-offset"), ("bpy.types.spacesequenceeditor.show_strip_source*", "video_editing/sequencer/navigating.html#bpy-types-spacesequenceeditor-show-strip-source"), ("bpy.types.toolsettings.gpencil_stroke_placement*", "grease_pencil/modes/draw/stroke_placement.html#bpy-types-toolsettings-gpencil-stroke-placement"), + ("bpy.types.toolsettings.use_keyframe_cycle_aware*", "editors/timeline.html#bpy-types-toolsettings-use-keyframe-cycle-aware"), ("bpy.types.toolsettings.use_keyframe_insert_auto*", "editors/timeline.html#bpy-types-toolsettings-use-keyframe-insert-auto"), ("bpy.types.viewlayer.use_pass_cryptomatte_object*", "render/layers/passes.html#bpy-types-viewlayer-use-pass-cryptomatte-object"), ("bpy.ops.armature.rigify_apply_selection_colors*", "addons/rigging/rigify/metarigs.html#bpy-ops-armature-rigify-apply-selection-colors"), @@ -291,6 +301,7 @@ url_manual_mapping = ( ("bpy.types.volumedisplay.interpolation_method*", "modeling/volumes/properties.html#bpy-types-volumedisplay-interpolation-method"), ("bpy.types.clothsettings.use_pressure_volume*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-use-pressure-volume"), ("bpy.types.clothsettings.vertex_group_intern*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-vertex-group-intern"), + ("bpy.types.colormanagedviewsettings.exposure*", "render/color_management.html#bpy-types-colormanagedviewsettings-exposure"), ("bpy.types.cyclesrendersettings.*dicing_rate*", "render/cycles/render_settings/subdivision.html#bpy-types-cyclesrendersettings-dicing-rate"), ("bpy.types.fluiddomainsettings.cfl_condition*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-cfl-condition"), ("bpy.types.fluiddomainsettings.show_velocity*", "physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-show-velocity"), @@ -410,6 +421,7 @@ url_manual_mapping = ( ("bpy.types.view3doverlay.wireframe_opacity*", "editors/3dview/display/overlays.html#bpy-types-view3doverlay-wireframe-opacity"), ("bpy.ops.gpencil.active_frames_delete_all*", "grease_pencil/animation/tools.html#bpy-ops-gpencil-active-frames-delete-all"), ("bpy.ops.gpencil.stroke_merge_by_distance*", "grease_pencil/modes/edit/grease_pencil_menu.html#bpy-ops-gpencil-stroke-merge-by-distance"), + ("bpy.ops.node.collapse_hide_unused_toggle*", "interface/controls/nodes/editing.html#bpy-ops-node-collapse-hide-unused-toggle"), ("bpy.ops.object.anim_transforms_to_deltas*", "scene_layout/object/editing/apply.html#bpy-ops-object-anim-transforms-to-deltas"), ("bpy.ops.object.convert_proxy_to_override*", "files/linked_libraries/library_overrides.html#bpy-ops-object-convert-proxy-to-override"), ("bpy.ops.object.modifier_copy_to_selected*", "modeling/modifiers/introduction.html#bpy-ops-object-modifier-copy-to-selected"), @@ -421,6 +433,7 @@ url_manual_mapping = ( ("bpy.types.brushgpencilsettings.show_fill*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-show-fill"), ("bpy.types.brushgpencilsettings.uv_random*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-uv-random"), ("bpy.types.clothsettings.internal_tension*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-tension"), + ("bpy.types.colormanagedviewsettings.gamma*", "render/color_management.html#bpy-types-colormanagedviewsettings-gamma"), ("bpy.types.compositornodeplanetrackdeform*", "compositing/types/distort/plane_track_deform.html#bpy-types-compositornodeplanetrackdeform"), ("bpy.types.curve.bevel_factor_mapping_end*", "modeling/curves/properties/geometry.html#bpy-types-curve-bevel-factor-mapping-end"), ("bpy.types.fluiddomainsettings.cache_type*", "physics/fluid/type/domain/cache.html#bpy-types-fluiddomainsettings-cache-type"), @@ -475,6 +488,7 @@ url_manual_mapping = ( ("bpy.types.brush.multiplane_scrape_angle*", "sculpt_paint/sculpting/tools/multiplane_scrape.html#bpy-types-brush-multiplane-scrape-angle"), ("bpy.types.clothsettings.internal_spring*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-spring"), ("bpy.types.clothsettings.pressure_factor*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-pressure-factor"), + ("bpy.types.colormanagedviewsettings.look*", "render/color_management.html#bpy-types-colormanagedviewsettings-look"), ("bpy.types.compositornodecolorcorrection*", "compositing/types/color/color_correction.html#bpy-types-compositornodecolorcorrection"), ("bpy.types.compositornodemoviedistortion*", "compositing/types/distort/movie_distortion.html#bpy-types-compositornodemoviedistortion"), ("bpy.types.fluiddomainsettings.use_guide*", "physics/fluid/type/domain/guides.html#bpy-types-fluiddomainsettings-use-guide"), @@ -513,6 +527,7 @@ url_manual_mapping = ( ("bpy.types.view3doverlay.show_wireframes*", "editors/3dview/display/overlays.html#bpy-types-view3doverlay-show-wireframes"), ("bpy.types.view3dshading.background_type*", "editors/3dview/display/shading.html#bpy-types-view3dshading-background-type"), ("bpy.types.workspace.use_filter_by_owner*", "interface/window_system/workspaces.html#bpy-types-workspace-use-filter-by-owner"), + ("bpy.ops.gpencil.image_to_grease_pencil*", "editors/image/editing.html#bpy-ops-gpencil-image-to-grease-pencil"), ("bpy.ops.mesh.vertices_smooth_laplacian*", "modeling/meshes/editing/vertex/laplacian_smooth.html#bpy-ops-mesh-vertices-smooth-laplacian"), ("bpy.ops.object.multires_rebuild_subdiv*", "modeling/modifiers/generate/multiresolution.html#bpy-ops-object-multires-rebuild-subdiv"), ("bpy.ops.sequencer.select_side_of_frame*", "video_editing/sequencer/selecting.html#bpy-ops-sequencer-select-side-of-frame"), @@ -575,6 +590,7 @@ url_manual_mapping = ( ("bpy.types.brush.texture_overlay_alpha*", "sculpt_paint/brush/cursor.html#bpy-types-brush-texture-overlay-alpha"), ("bpy.types.brushgpencilsettings.random*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-random"), ("bpy.types.clothsettings.target_volume*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-target-volume"), + ("bpy.types.colormanageddisplaysettings*", "render/color_management.html#bpy-types-colormanageddisplaysettings"), ("bpy.types.compositornodebilateralblur*", "compositing/types/filter/bilateral_blur.html#bpy-types-compositornodebilateralblur"), ("bpy.types.compositornodedistancematte*", "compositing/types/matte/distance_key.html#bpy-types-compositornodedistancematte"), ("bpy.types.compositornodesetalpha.mode*", "compositing/types/converter/set_alpha.html#bpy-types-compositornodesetalpha-mode"), @@ -660,7 +676,9 @@ url_manual_mapping = ( ("bpy.types.shadernodeambientocclusion*", "render/shader_nodes/input/ao.html#bpy-types-shadernodeambientocclusion"), ("bpy.types.shadernodevolumeabsorption*", "render/shader_nodes/shader/volume_absorption.html#bpy-types-shadernodevolumeabsorption"), ("bpy.types.shadernodevolumeprincipled*", "render/shader_nodes/shader/volume_principled.html#bpy-types-shadernodevolumeprincipled"), + ("bpy.types.spaceoutliner.display_mode*", "editors/outliner/interface.html#bpy-types-spaceoutliner-display-mode"), ("bpy.types.spaceoutliner.filter_state*", "editors/outliner/interface.html#bpy-types-spaceoutliner-filter-state"), + ("bpy.types.toolsettings.keyframe_type*", "editors/timeline.html#bpy-types-toolsettings-keyframe-type"), ("bpy.types.toolsettings.snap_elements*", "editors/3dview/controls/snapping.html#bpy-types-toolsettings-snap-elements"), ("bpy.types.toolsettings.use_snap_self*", "editors/3dview/controls/snapping.html#bpy-types-toolsettings-use-snap-self"), ("bpy.types.viewlayer.active_aov_index*", "render/layers/passes.html#bpy-types-viewlayer-active-aov-index"), @@ -718,6 +736,7 @@ url_manual_mapping = ( ("bpy.types.regionview3d.use_box_clip*", "editors/3dview/navigate/views.html#bpy-types-regionview3d-use-box-clip"), ("bpy.types.rendersettings.use_border*", "render/output/properties/dimensions.html#bpy-types-rendersettings-use-border"), ("bpy.types.rigidbodyconstraint.limit*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-limit"), + ("bpy.types.rigidbodyobject.kinematic*", "physics/rigid_body/properties/settings.html#bpy-types-rigidbodyobject-kinematic"), ("bpy.types.scene.audio_doppler_speed*", "scene_layout/scene/properties.html#bpy-types-scene-audio-doppler-speed"), ("bpy.types.sceneeevee.bokeh_max_size*", "render/eevee/render_settings/depth_of_field.html#bpy-types-sceneeevee-bokeh-max-size"), ("bpy.types.sculpt.detail_type_method*", "sculpt_paint/sculpting/tool_settings/dyntopo.html#bpy-types-sculpt-detail-type-method"), @@ -742,7 +761,7 @@ url_manual_mapping = ( ("bpy.ops.mesh.select_interior_faces*", "modeling/meshes/selecting/all_by_trait.html#bpy-ops-mesh-select-interior-faces"), ("bpy.ops.mesh.select_similar_region*", "modeling/meshes/selecting/similar.html#bpy-ops-mesh-select-similar-region"), ("bpy.ops.mesh.tris_convert_to_quads*", "modeling/meshes/editing/face/triangles_quads.html#bpy-ops-mesh-tris-convert-to-quads"), - ("bpy.ops.node.read_fullsamplelayers*", "interface/controls/nodes/editing.html#bpy-ops-node-read-fullsamplelayers"), + ("bpy.ops.node.active_preview_toggle*", "modeling/geometry_nodes/introduction.html#bpy-ops-node-active-preview-toggle"), ("bpy.ops.object.datalayout_transfer*", "scene_layout/object/editing/link_transfer/transfer_mesh_data_layout.html#bpy-ops-object-datalayout-transfer"), ("bpy.ops.object.multires_base_apply*", "modeling/modifiers/generate/multiresolution.html#bpy-ops-object-multires-base-apply"), ("bpy.ops.object.randomize_transform*", "scene_layout/object/editing/transform/randomize.html#bpy-ops-object-randomize-transform"), @@ -752,6 +771,7 @@ url_manual_mapping = ( ("bpy.ops.object.vertex_group_remove*", "modeling/meshes/properties/vertex_groups/vertex_groups.html#bpy-ops-object-vertex-group-remove"), ("bpy.ops.object.vertex_group_smooth*", "sculpt_paint/weight_paint/editing.html#bpy-ops-object-vertex-group-smooth"), ("bpy.ops.outliner.collection_enable*", "editors/outliner/editing.html#bpy-ops-outliner-collection-enable"), + ("bpy.ops.palette.extract_from_image*", "editors/image/editing.html#bpy-ops-palette-extract-from-image"), ("bpy.ops.pose.user_transforms_clear*", "animation/armatures/posing/editing/clear.html#bpy-ops-pose-user-transforms-clear"), ("bpy.ops.poselib.browse_interactive*", "animation/armatures/posing/editing/pose_library.html#bpy-ops-poselib-browse-interactive"), ("bpy.ops.sculpt.set_persistent_base*", "sculpt_paint/sculpting/tools/layer.html#bpy-ops-sculpt-set-persistent-base"), @@ -766,6 +786,7 @@ url_manual_mapping = ( ("bpy.types.brush.use_cursor_overlay*", "sculpt_paint/brush/cursor.html#bpy-types-brush-use-cursor-overlay"), ("bpy.types.camera.show_passepartout*", "render/cameras.html#bpy-types-camera-show-passepartout"), ("bpy.types.collection.lineart_usage*", "scene_layout/collections/properties.html#bpy-types-collection-lineart-usage"), + ("bpy.types.colormanagedviewsettings*", "render/color_management.html#bpy-types-colormanagedviewsettings"), ("bpy.types.compositornodebokehimage*", "compositing/types/input/bokeh_image.html#bpy-types-compositornodebokehimage"), ("bpy.types.compositornodecolormatte*", "compositing/types/matte/color_key.html#bpy-types-compositornodecolormatte"), ("bpy.types.compositornodecolorspill*", "compositing/types/matte/color_spill.html#bpy-types-compositornodecolorspill"), @@ -797,6 +818,7 @@ url_manual_mapping = ( ("bpy.types.shadernodebsdfrefraction*", "render/shader_nodes/shader/refraction.html#bpy-types-shadernodebsdfrefraction"), ("bpy.types.shadernodeoutputmaterial*", "render/shader_nodes/output/material.html#bpy-types-shadernodeoutputmaterial"), ("bpy.types.shadernodetexenvironment*", "render/shader_nodes/textures/environment.html#bpy-types-shadernodetexenvironment"), + ("bpy.types.spacesequenceeditor.show*", "video_editing/preview/introduction.html#bpy-types-spacesequenceeditor-show"), ("bpy.types.spaceuveditor.uv_opacity*", "editors/uv/overlays.html#bpy-types-spaceuveditor-uv-opacity"), ("bpy.types.subdividegpencilmodifier*", "grease_pencil/modifiers/generate/subdivide.html#bpy-types-subdividegpencilmodifier"), ("bpy.types.thicknessgpencilmodifier*", "grease_pencil/modifiers/deform/thickness.html#bpy-types-thicknessgpencilmodifier"), @@ -868,6 +890,7 @@ url_manual_mapping = ( ("bpy.types.multiplygpencilmodifier*", "grease_pencil/modifiers/generate/multiple_strokes.html#bpy-types-multiplygpencilmodifier"), ("bpy.types.rendersettings.filepath*", "render/output/properties/output.html#bpy-types-rendersettings-filepath"), ("bpy.types.rendersettings.fps_base*", "render/output/properties/dimensions.html#bpy-types-rendersettings-fps-base"), + ("bpy.types.rigidbodyobject.enabled*", "physics/rigid_body/properties/settings.html#bpy-types-rigidbodyobject-enabled"), ("bpy.types.sceneeevee.use_overscan*", "render/eevee/render_settings/film.html#bpy-types-sceneeevee-use-overscan"), ("bpy.types.sequencetransform.scale*", "video_editing/sequencer/sidebar/strip.html#bpy-types-sequencetransform-scale"), ("bpy.types.shadernodeeeveespecular*", "render/shader_nodes/shader/specular_bsdf.html#bpy-types-shadernodeeeveespecular"), @@ -905,6 +928,7 @@ url_manual_mapping = ( ("bpy.ops.outliner.collection_hide*", "editors/outliner/editing.html#bpy-ops-outliner-collection-hide"), ("bpy.ops.outliner.collection_show*", "editors/outliner/editing.html#bpy-ops-outliner-collection-show"), ("bpy.ops.paint.mask_lasso_gesture*", "sculpt_paint/sculpting/editing/mask.html#bpy-ops-paint-mask-lasso-gesture"), + ("bpy.ops.rigidbody.mass_calculate*", "physics/rigid_body/editing.html#bpy-ops-rigidbody-mass-calculate"), ("bpy.ops.screen.spacedata_cleanup*", "advanced/operators.html#bpy-ops-screen-spacedata-cleanup"), ("bpy.ops.sculpt.detail_flood_fill*", "sculpt_paint/sculpting/tool_settings/dyntopo.html#bpy-ops-sculpt-detail-flood-fill"), ("bpy.ops.sequencer.duplicate_move*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-duplicate-move"), @@ -979,6 +1003,7 @@ url_manual_mapping = ( ("bpy.ops.gpencil.stroke_separate*", "grease_pencil/modes/edit/grease_pencil_menu.html#bpy-ops-gpencil-stroke-separate"), ("bpy.ops.gpencil.stroke_simplify*", "grease_pencil/modes/edit/stroke_menu.html#bpy-ops-gpencil-stroke-simplify"), ("bpy.ops.graph.snap_cursor_value*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-snap-cursor-value"), + ("bpy.ops.image.save_all_modified*", "editors/image/editing.html#bpy-ops-image-save-all-modified"), ("bpy.ops.mesh.extrude_edges_move*", "modeling/meshes/editing/edge/extrude_edges.html#bpy-ops-mesh-extrude-edges-move"), ("bpy.ops.mesh.extrude_faces_move*", "modeling/meshes/editing/face/extrude_individual_faces.html#bpy-ops-mesh-extrude-faces-move"), ("bpy.ops.mesh.faces_shade_smooth*", "modeling/meshes/editing/face/shading.html#bpy-ops-mesh-faces-shade-smooth"), @@ -987,6 +1012,7 @@ url_manual_mapping = ( ("bpy.ops.mesh.primitive_cube_add*", "modeling/meshes/primitives.html#bpy-ops-mesh-primitive-cube-add"), ("bpy.ops.mesh.primitive_grid_add*", "modeling/meshes/primitives.html#bpy-ops-mesh-primitive-grid-add"), ("bpy.ops.mesh.subdivide_edgering*", "modeling/meshes/editing/edge/subdivide_edge_ring.html#bpy-ops-mesh-subdivide-edgering"), + ("bpy.ops.node.hide_socket_toggle*", "interface/controls/nodes/editing.html#bpy-ops-node-hide-socket-toggle"), ("bpy.ops.node.tree_socket_remove*", "interface/controls/nodes/groups.html#bpy-ops-node-tree-socket-remove"), ("bpy.ops.object.constraints_copy*", "animation/constraints/interface/adding_removing.html#bpy-ops-object-constraints-copy"), ("bpy.ops.object.gpencil_modifier*", "grease_pencil/modifiers/index.html#bpy-ops-object-gpencil-modifier"), @@ -997,6 +1023,8 @@ url_manual_mapping = ( ("bpy.ops.object.vertex_group_add*", "modeling/meshes/properties/vertex_groups/vertex_groups.html#bpy-ops-object-vertex-group-add"), ("bpy.ops.object.vertex_group_fix*", "sculpt_paint/weight_paint/editing.html#bpy-ops-object-vertex-group-fix"), ("bpy.ops.outliner.collection_new*", "editors/outliner/editing.html#bpy-ops-outliner-collection-new"), + ("bpy.ops.outliner.show_hierarchy*", "editors/outliner/editing.html#bpy-ops-outliner-show-hierarchy"), + ("bpy.ops.outliner.show_one_level*", "editors/outliner/editing.html#bpy-ops-outliner-show-one-level"), ("bpy.ops.paint.brush_colors_flip*", "sculpt_paint/texture_paint/tool_settings/brush_settings.html#bpy-ops-paint-brush-colors-flip"), ("bpy.ops.paint.weight_from_bones*", "sculpt_paint/weight_paint/editing.html#bpy-ops-paint-weight-from-bones"), ("bpy.ops.poselib.action_sanitize*", "animation/armatures/properties/pose_library.html#bpy-ops-poselib-action-sanitize"), @@ -1011,6 +1039,7 @@ url_manual_mapping = ( ("bpy.ops.uv.shortest_path_select*", "editors/uv/selecting.html#bpy-ops-uv-shortest-path-select"), ("bpy.ops.wm.operator_cheat_sheet*", "advanced/operators.html#bpy-ops-wm-operator-cheat-sheet"), ("bpy.ops.wm.previews_batch_clear*", "files/blend/previews.html#bpy-ops-wm-previews-batch-clear"), + ("bpy.ops.wm.recover_last_session*", "files/blend/open_save.html#bpy-ops-wm-recover-last-session"), ("bpy.types.armature.use_mirror_x*", "animation/armatures/bones/tools/tool_settings.html#bpy-types-armature-use-mirror-x"), ("bpy.types.bakesettings.normal_b*", "render/cycles/baking.html#bpy-types-bakesettings-normal-b"), ("bpy.types.bakesettings.normal_g*", "render/cycles/baking.html#bpy-types-bakesettings-normal-g"), @@ -1046,6 +1075,7 @@ url_manual_mapping = ( ("bpy.types.material.blend_method*", "render/eevee/materials/settings.html#bpy-types-material-blend-method"), ("bpy.types.mirrorgpencilmodifier*", "grease_pencil/modifiers/generate/mirror.html#bpy-types-mirrorgpencilmodifier"), ("bpy.types.movietrackingcamera.k*", "movie_clip/tracking/clip/sidebar/track/camera.html#bpy-types-movietrackingcamera-k"), + ("bpy.types.node.use_custom_color*", "interface/controls/nodes/sidebar.html#bpy-types-node-use-custom-color"), ("bpy.types.offsetgpencilmodifier*", "grease_pencil/modifiers/deform/offset.html#bpy-types-offsetgpencilmodifier"), ("bpy.types.posebone.custom_shape*", "animation/armatures/bones/properties/display.html#bpy-types-posebone-custom-shape"), ("bpy.types.rendersettings.tile_x*", "render/cycles/render_settings/performance.html#bpy-types-rendersettings-tile-x"), @@ -1106,6 +1136,7 @@ url_manual_mapping = ( ("bpy.types.compositornoderotate*", "compositing/types/distort/rotate.html#bpy-types-compositornoderotate"), ("bpy.types.compositornodeviewer*", "compositing/types/output/viewer.html#bpy-types-compositornodeviewer"), ("bpy.types.constraint.influence*", "animation/constraints/interface/common.html#bpy-types-constraint-influence"), + ("bpy.types.curve.use_path_clamp*", "modeling/curves/properties/path_animation.html#bpy-types-curve-use-path-clamp"), ("bpy.types.datatransfermodifier*", "modeling/modifiers/modify/data_transfer.html#bpy-types-datatransfermodifier"), ("bpy.types.dynamicpaintmodifier*", "physics/dynamic_paint/index.html#bpy-types-dynamicpaintmodifier"), ("bpy.types.ffmpegsettings.audio*", "render/output/properties/output.html#bpy-types-ffmpegsettings-audio"), @@ -1118,6 +1149,7 @@ url_manual_mapping = ( ("bpy.types.geometrynodemeshline*", "modeling/geometry_nodes/mesh_primitives/line.html#bpy-types-geometrynodemeshline"), ("bpy.types.gpencillayer.opacity*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-opacity"), ("bpy.types.image.display_aspect*", "editors/image/sidebar.html#bpy-types-image-display-aspect"), + ("bpy.types.keyingsetsall.active*", "editors/timeline.html#bpy-types-keyingsetsall-active"), ("bpy.types.limitscaleconstraint*", "animation/constraints/transform/limit_scale.html#bpy-types-limitscaleconstraint"), ("bpy.types.materialgpencilstyle*", "grease_pencil/materials/index.html#bpy-types-materialgpencilstyle"), ("bpy.types.mesh.use_auto_smooth*", "modeling/meshes/structure.html#bpy-types-mesh-use-auto-smooth"), @@ -1126,6 +1158,7 @@ url_manual_mapping = ( ("bpy.types.object.hide_viewport*", "scene_layout/object/properties/visibility.html#bpy-types-object-hide-viewport"), ("bpy.types.posebone.rigify_type*", "addons/rigging/rigify/rig_types/index.html#bpy-types-posebone-rigify-type"), ("bpy.types.preferencesfilepaths*", "editors/preferences/file_paths.html#bpy-types-preferencesfilepaths"), + ("bpy.types.rigidbodyobject.mass*", "physics/rigid_body/properties/settings.html#bpy-types-rigidbodyobject-mass"), ("bpy.types.scene.background_set*", "scene_layout/scene/properties.html#bpy-types-scene-background-set"), ("bpy.types.sequence.frame_start*", "video_editing/sequencer/sidebar/strip.html#bpy-types-sequence-frame-start"), ("bpy.types.shadernodebackground*", "render/shader_nodes/shader/background.html#bpy-types-shadernodebackground"), @@ -1159,6 +1192,7 @@ url_manual_mapping = ( ("bpy.ops.gpencil.stroke_sample*", "grease_pencil/modes/edit/stroke_menu.html#bpy-ops-gpencil-stroke-sample"), ("bpy.ops.gpencil.stroke_smooth*", "grease_pencil/modes/edit/point_menu.html#bpy-ops-gpencil-stroke-smooth"), ("bpy.ops.graph.keyframe_insert*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-keyframe-insert"), + ("bpy.ops.image.read_viewlayers*", "editors/image/editing.html#bpy-ops-image-read-viewlayers"), ("bpy.ops.mesh.blend_from_shape*", "modeling/meshes/editing/vertex/blend_shape.html#bpy-ops-mesh-blend-from-shape"), ("bpy.ops.mesh.dissolve_limited*", "modeling/meshes/editing/mesh/delete.html#bpy-ops-mesh-dissolve-limited"), ("bpy.ops.mesh.face_make_planar*", "modeling/meshes/editing/mesh/cleanup.html#bpy-ops-mesh-face-make-planar"), @@ -1166,6 +1200,7 @@ url_manual_mapping = ( ("bpy.ops.mesh.faces_shade_flat*", "modeling/meshes/editing/face/shading.html#bpy-ops-mesh-faces-shade-flat"), ("bpy.ops.mesh.paint_mask_slice*", "sculpt_paint/sculpting/editing/mask.html#bpy-ops-mesh-paint-mask-slice"), ("bpy.ops.mesh.select_ungrouped*", "modeling/meshes/selecting/all_by_trait.html#bpy-ops-mesh-select-ungrouped"), + ("bpy.ops.node.delete_reconnect*", "interface/controls/nodes/editing.html#bpy-ops-node-delete-reconnect"), ("bpy.ops.node.tree_path_parent*", "interface/controls/nodes/groups.html#bpy-ops-node-tree-path-parent"), ("bpy.ops.node.tree_socket_move*", "interface/controls/nodes/groups.html#bpy-ops-node-tree-socket-move"), ("bpy.ops.object.duplicate_move*", "scene_layout/object/editing/duplicate.html#bpy-ops-object-duplicate-move"), @@ -1274,6 +1309,8 @@ url_manual_mapping = ( ("bpy.ops.mesh.delete_edgeloop*", "modeling/meshes/editing/mesh/delete.html#bpy-ops-mesh-delete-edgeloop"), ("bpy.ops.mesh.vertices_smooth*", "modeling/meshes/editing/vertex/smooth_vertices.html#bpy-ops-mesh-vertices-smooth"), ("bpy.ops.nla.make_single_user*", "editors/nla/editing.html#bpy-ops-nla-make-single-user"), + ("bpy.ops.node.clipboard_paste*", "interface/controls/nodes/editing.html#bpy-ops-node-clipboard-paste"), + ("bpy.ops.node.node_copy_color*", "interface/controls/nodes/sidebar.html#bpy-ops-node-node-copy-color"), ("bpy.ops.node.read_viewlayers*", "interface/controls/nodes/editing.html#bpy-ops-node-read-viewlayers"), ("bpy.ops.node.tree_socket_add*", "interface/controls/nodes/groups.html#bpy-ops-node-tree-socket-add"), ("bpy.ops.object.data_transfer*", "scene_layout/object/editing/link_transfer/transfer_mesh_data.html#bpy-ops-object-data-transfer"), @@ -1281,6 +1318,8 @@ url_manual_mapping = ( ("bpy.ops.object.select_linked*", "scene_layout/object/selecting.html#bpy-ops-object-select-linked"), ("bpy.ops.object.select_mirror*", "scene_layout/object/selecting.html#bpy-ops-object-select-mirror"), ("bpy.ops.object.select_random*", "scene_layout/object/selecting.html#bpy-ops-object-select-random"), + ("bpy.ops.object.transfer_mode*", "sculpt_paint/sculpting/editing/sculpt.html#bpy-ops-object-transfer-mode"), + ("bpy.ops.outliner.show_active*", "editors/outliner/editing.html#bpy-ops-outliner-show-active"), ("bpy.ops.paint.add_simple_uvs*", "sculpt_paint/texture_paint/tool_settings/texture_slots.html#bpy-ops-paint-add-simple-uvs"), ("bpy.ops.pose.rigify_generate*", "addons/rigging/rigify/basics.html#bpy-ops-pose-rigify-generate"), ("bpy.ops.preferences.autoexec*", "editors/preferences/save_load.html#bpy-ops-preferences-autoexec"), @@ -1297,6 +1336,7 @@ url_manual_mapping = ( ("bpy.ops.uv.project_from_view*", "modeling/meshes/editing/uv.html#bpy-ops-uv-project-from-view"), ("bpy.ops.wm.blenderkit_logout*", "addons/3d_view/blenderkit.html#bpy-ops-wm-blenderkit-logout"), ("bpy.ops.wm.memory_statistics*", "advanced/operators.html#bpy-ops-wm-memory-statistics"), + ("bpy.ops.wm.recover_auto_save*", "files/blend/open_save.html#bpy-ops-wm-recover-auto-save"), ("bpy.types.adjustmentsequence*", "video_editing/sequencer/strips/adjustment.html#bpy-types-adjustmentsequence"), ("bpy.types.alphaundersequence*", "video_editing/sequencer/strips/effects/alpha_over_under_overdrop.html#bpy-types-alphaundersequence"), ("bpy.types.armature.show_axes*", "animation/armatures/properties/display.html#bpy-types-armature-show-axes"), @@ -1356,6 +1396,7 @@ url_manual_mapping = ( ("bpy.ops.anim.keyframe_clear*", "animation/keyframes/editing.html#bpy-ops-anim-keyframe-clear"), ("bpy.ops.armature.flip_names*", "animation/armatures/bones/editing/naming.html#bpy-ops-armature-flip-names"), ("bpy.ops.armature.select_all*", "animation/armatures/bones/selecting.html#bpy-ops-armature-select-all"), + ("bpy.ops.clip.average_tracks*", "movie_clip/tracking/clip/editing/track.html#bpy-ops-clip-average-tracks"), ("bpy.ops.clip.refine_markers*", "movie_clip/tracking/clip/editing/track.html#bpy-ops-clip-refine-markers"), ("bpy.ops.clip.select_grouped*", "movie_clip/tracking/clip/selecting.html#bpy-ops-clip-select-grouped"), ("bpy.ops.clip.track_to_empty*", "movie_clip/tracking/clip/editing/reconstruction.html#bpy-ops-clip-track-to-empty"), @@ -1369,6 +1410,7 @@ url_manual_mapping = ( ("bpy.ops.gpencil.stroke_join*", "grease_pencil/modes/edit/stroke_menu.html#bpy-ops-gpencil-stroke-join"), ("bpy.ops.gpencil.stroke_trim*", "grease_pencil/modes/edit/stroke_menu.html#bpy-ops-gpencil-stroke-trim"), ("bpy.ops.gpencil.trace_image*", "grease_pencil/modes/object/trace_image.html#bpy-ops-gpencil-trace-image"), + ("bpy.ops.image.external_edit*", "editors/image/editing.html#bpy-ops-image-external-edit"), ("bpy.ops.mesh.colors_reverse*", "modeling/meshes/editing/face/face_data.html#bpy-ops-mesh-colors-reverse"), ("bpy.ops.mesh.dissolve_edges*", "modeling/meshes/editing/mesh/delete.html#bpy-ops-mesh-dissolve-edges"), ("bpy.ops.mesh.dissolve_faces*", "modeling/meshes/editing/mesh/delete.html#bpy-ops-mesh-dissolve-faces"), @@ -1383,6 +1425,10 @@ url_manual_mapping = ( ("bpy.ops.mesh.smooth_normals*", "modeling/meshes/editing/mesh/normals.html#bpy-ops-mesh-smooth-normals"), ("bpy.ops.nla.action_pushdown*", "editors/nla/tracks.html#bpy-ops-nla-action-pushdown"), ("bpy.ops.nla.tweakmode_enter*", "editors/nla/editing.html#bpy-ops-nla-tweakmode-enter"), + ("bpy.ops.node.clipboard_copy*", "interface/controls/nodes/editing.html#bpy-ops-node-clipboard-copy"), + ("bpy.ops.node.duplicate_move*", "interface/controls/nodes/editing.html#bpy-ops-node-duplicate-move"), + ("bpy.ops.node.options_toggle*", "interface/controls/nodes/editing.html#bpy-ops-node-options-toggle"), + ("bpy.ops.node.preview_toggle*", "interface/controls/nodes/editing.html#bpy-ops-node-preview-toggle"), ("bpy.ops.object.origin_clear*", "scene_layout/object/editing/clear.html#bpy-ops-object-origin-clear"), ("bpy.ops.object.parent_clear*", "scene_layout/object/editing/parent.html#bpy-ops-object-parent-clear"), ("bpy.ops.object.shade_smooth*", "scene_layout/object/editing/shading.html#bpy-ops-object-shade-smooth"), @@ -1403,6 +1449,7 @@ url_manual_mapping = ( ("bpy.ops.uv.minimize_stretch*", "modeling/meshes/uv/editing.html#bpy-ops-uv-minimize-stretch"), ("bpy.ops.uv.select_edge_ring*", "editors/uv/selecting.html#bpy-ops-uv-select-edge-ring"), ("bpy.ops.wm.blenderkit_login*", "addons/3d_view/blenderkit.html#bpy-ops-wm-blenderkit-login"), + ("bpy.ops.wm.save_as_mainfile*", "files/blend/open_save.html#bpy-ops-wm-save-as-mainfile"), ("bpy.types.alphaoversequence*", "video_editing/sequencer/strips/effects/alpha_over_under_overdrop.html#bpy-types-alphaoversequence"), ("bpy.types.armatureeditbones*", "animation/armatures/bones/editing/index.html#bpy-types-armatureeditbones"), ("bpy.types.brush.pose_offset*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-pose-offset"), @@ -1642,11 +1689,15 @@ url_manual_mapping = ( ("bpy.ops.mesh.edge_rotate*", "modeling/meshes/editing/edge/rotate_edge.html#bpy-ops-mesh-edge-rotate"), ("bpy.ops.mesh.unsubdivide*", "modeling/meshes/editing/edge/unsubdivide.html#bpy-ops-mesh-unsubdivide"), ("bpy.ops.mesh.uvs_reverse*", "modeling/meshes/uv/editing.html#bpy-ops-mesh-uvs-reverse"), + ("bpy.ops.node.hide_toggle*", "interface/controls/nodes/editing.html#bpy-ops-node-hide-toggle"), + ("bpy.ops.node.mute_toggle*", "interface/controls/nodes/editing.html#bpy-ops-node-mute-toggle"), ("bpy.ops.object.hide_view*", "scene_layout/object/editing/show_hide.html#bpy-ops-object-hide-view"), ("bpy.ops.object.track_set*", "animation/constraints/interface/adding_removing.html#bpy-ops-object-track-set"), ("bpy.ops.pose.scale_clear*", "animation/armatures/posing/editing/clear.html#bpy-ops-pose-scale-clear"), ("bpy.ops.poselib.pose_add*", "animation/armatures/posing/editing/pose_library.html#bpy-ops-poselib-pose-add"), ("bpy.ops.scene.view_layer*", "render/layers/introduction.html#bpy-ops-scene-view-layer"), + ("bpy.ops.screen.redo_last*", "interface/undo_redo.html#bpy-ops-screen-redo-last"), + ("bpy.ops.sculpt.mask_init*", "sculpt_paint/sculpting/editing/mask.html#bpy-ops-sculpt-mask-init"), ("bpy.ops.sequencer.delete*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-delete"), ("bpy.ops.sequencer.reload*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-reload"), ("bpy.ops.sequencer.unlock*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-unlock"), @@ -1659,7 +1710,9 @@ url_manual_mapping = ( ("bpy.ops.uv.snap_selected*", "modeling/meshes/uv/editing.html#bpy-ops-uv-snap-selected"), ("bpy.ops.view3d.localview*", "editors/3dview/navigate/local_view.html#bpy-ops-view3d-localview"), ("bpy.ops.view3d.view_axis*", "editors/3dview/navigate/viewpoint.html#bpy-ops-view3d-view-axis"), + ("bpy.ops.wm.open_mainfile*", "files/blend/open_save.html#bpy-ops-wm-open-mainfile"), ("bpy.ops.wm.owner_disable*", "interface/window_system/workspaces.html#bpy-ops-wm-owner-disable"), + ("bpy.ops.wm.save_mainfile*", "files/blend/open_save.html#bpy-ops-wm-save-mainfile"), ("bpy.types.bone.show_wire*", "animation/armatures/bones/properties/display.html#bpy-types-bone-show-wire"), ("bpy.types.brush.hardness*", "sculpt_paint/sculpting/tool_settings/brush_settings.html#bpy-types-brush-hardness"), ("bpy.types.curvesmodifier*", "video_editing/sequencer/sidebar/modifiers.html#bpy-types-curvesmodifier"), @@ -1715,6 +1768,7 @@ url_manual_mapping = ( ("bpy.ops.nla.clear_scale*", "editors/nla/editing.html#bpy-ops-nla-clear-scale"), ("bpy.ops.nla.mute_toggle*", "editors/nla/editing.html#bpy-ops-nla-mute-toggle"), ("bpy.ops.node.group_make*", "interface/controls/nodes/groups.html#bpy-ops-node-group-make"), + ("bpy.ops.node.links_mute*", "interface/controls/nodes/editing.html#bpy-ops-node-links-mute"), ("bpy.ops.object.armature*", "animation/armatures/index.html#bpy-ops-object-armature"), ("bpy.ops.object.face_map*", "modeling/meshes/properties/object_data.html#bpy-ops-object-face-map"), ("bpy.ops.object.join_uvs*", "scene_layout/object/editing/link_transfer/copy_uvmaps.html#bpy-ops-object-join-uvs"), @@ -1794,6 +1848,8 @@ url_manual_mapping = ( ("bpy.ops.mesh.polybuild*", "modeling/meshes/tools/poly_build.html#bpy-ops-mesh-polybuild"), ("bpy.ops.mesh.subdivide*", "modeling/meshes/editing/edge/subdivide.html#bpy-ops-mesh-subdivide"), ("bpy.ops.mesh.wireframe*", "modeling/meshes/editing/face/wireframe.html#bpy-ops-mesh-wireframe"), + ("bpy.ops.node.link_make*", "interface/controls/nodes/editing.html#bpy-ops-node-link-make"), + ("bpy.ops.node.links_cut*", "interface/controls/nodes/editing.html#bpy-ops-node-links-cut"), ("bpy.ops.object.convert*", "scene_layout/object/editing/convert.html#bpy-ops-object-convert"), ("bpy.ops.object.gpencil*", "grease_pencil/index.html#bpy-ops-object-gpencil"), ("bpy.ops.object.speaker*", "render/output/audio/speaker.html#bpy-ops-object-speaker"), @@ -1815,7 +1871,6 @@ url_manual_mapping = ( ("bpy.types.blendtexture*", "render/materials/legacy_textures/types/blend.html#bpy-types-blendtexture"), ("bpy.types.brush.height*", "sculpt_paint/sculpting/tools/layer.html#bpy-types-brush-height"), ("bpy.types.castmodifier*", "modeling/modifiers/deform/cast.html#bpy-types-castmodifier"), - ("bpy.types.colormanaged*", "render/color_management.html#bpy-types-colormanaged"), ("bpy.types.curve.offset*", "modeling/curves/properties/geometry.html#bpy-types-curve-offset"), ("bpy.types.geometrynode*", "modeling/geometry_nodes/index.html#bpy-types-geometrynode"), ("bpy.types.glowsequence*", "video_editing/sequencer/strips/effects/glow.html#bpy-types-glowsequence"), @@ -1855,6 +1910,8 @@ url_manual_mapping = ( ("bpy.ops.file.pack_all*", "files/blend/packed_data.html#bpy-ops-file-pack-all"), ("bpy.ops.gpencil.paste*", "grease_pencil/modes/edit/grease_pencil_menu.html#bpy-ops-gpencil-paste"), ("bpy.ops.image.project*", "sculpt_paint/texture_paint/tool_settings/options.html#bpy-ops-image-project"), + ("bpy.ops.image.replace*", "editors/image/editing.html#bpy-ops-image-replace"), + ("bpy.ops.image.save_as*", "editors/image/editing.html#bpy-ops-image-save-as"), ("bpy.ops.material.copy*", "render/materials/assignment.html#bpy-ops-material-copy"), ("bpy.ops.mesh.decimate*", "modeling/meshes/editing/mesh/cleanup.html#bpy-ops-mesh-decimate"), ("bpy.ops.mesh.dissolve*", "modeling/meshes/editing/mesh/delete.html#bpy-ops-mesh-dissolve"), @@ -1907,6 +1964,10 @@ url_manual_mapping = ( ("bpy.ops.graph.sample*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-sample"), ("bpy.ops.graph.smooth*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-smooth"), ("bpy.ops.graph.unbake*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-unbake"), + ("bpy.ops.image.invert*", "editors/image/editing.html#bpy-ops-image-invert"), + ("bpy.ops.image.reload*", "editors/image/editing.html#bpy-ops-image-reload"), + ("bpy.ops.image.resize*", "editors/image/editing.html#bpy-ops-image-resize"), + ("bpy.ops.image.unpack*", "editors/image/editing.html#bpy-ops-image-unpack"), ("bpy.ops.material.new*", "render/materials/assignment.html#bpy-ops-material-new"), ("bpy.ops.object.align*", "scene_layout/object/editing/transform/align_objects.html#bpy-ops-object-align"), ("bpy.ops.object.empty*", "modeling/empties.html#bpy-ops-object-empty"), @@ -1921,6 +1982,8 @@ url_manual_mapping = ( ("bpy.types.constraint*", "animation/constraints/index.html#bpy-types-constraint"), ("bpy.types.imagepaint*", "sculpt_paint/texture_paint/index.html#bpy-types-imagepaint"), ("bpy.types.lightprobe*", "render/eevee/light_probes/index.html#bpy-types-lightprobe"), + ("bpy.types.node.color*", "interface/controls/nodes/sidebar.html#bpy-types-node-color"), + ("bpy.types.node.label*", "interface/controls/nodes/sidebar.html#bpy-types-node-label"), ("bpy.types.nodesocket*", "interface/controls/nodes/parts.html#bpy-types-nodesocket"), ("bpy.types.paint.tile*", "sculpt_paint/texture_paint/tool_settings/tiling.html#bpy-types-paint-tile"), ("bpy.types.pointcache*", "physics/baking.html#bpy-types-pointcache"), @@ -1935,6 +1998,7 @@ url_manual_mapping = ( ("bpy.ops.mesh.bisect*", "modeling/meshes/editing/mesh/bisect.html#bpy-ops-mesh-bisect"), ("bpy.ops.mesh.delete*", "modeling/meshes/editing/mesh/delete.html#bpy-ops-mesh-delete"), ("bpy.ops.nla.move_up*", "editors/nla/editing.html#bpy-ops-nla-move-up"), + ("bpy.ops.node.delete*", "interface/controls/nodes/editing.html#bpy-ops-node-delete"), ("bpy.ops.object.bake*", "render/cycles/baking.html#bpy-ops-object-bake"), ("bpy.ops.object.hook*", "modeling/meshes/editing/vertex/hooks.html#bpy-ops-object-hook"), ("bpy.ops.object.join*", "scene_layout/object/editing/join.html#bpy-ops-object-join"), @@ -1954,6 +2018,7 @@ url_manual_mapping = ( ("bpy.types.fmodifier*", "editors/graph_editor/fcurves/sidebar/modifiers.html#bpy-types-fmodifier"), ("bpy.types.freestyle*", "render/freestyle/index.html#bpy-types-freestyle"), ("bpy.types.movieclip*", "movie_clip/index.html#bpy-types-movieclip"), + ("bpy.types.node.name*", "interface/controls/nodes/sidebar.html#bpy-types-node-name"), ("bpy.types.nodeframe*", "interface/controls/nodes/frame.html#bpy-types-nodeframe"), ("bpy.types.nodegroup*", "interface/controls/nodes/groups.html#bpy-types-nodegroup"), ("bpy.types.spotlight*", "render/lights/light_object.html#bpy-types-spotlight"), @@ -1971,6 +2036,10 @@ url_manual_mapping = ( ("bpy.ops.graph.copy*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-copy"), ("bpy.ops.graph.hide*", "editors/graph_editor/channels.html#bpy-ops-graph-hide"), ("bpy.ops.graph.snap*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-snap"), + ("bpy.ops.image.flip*", "editors/image/editing.html#bpy-ops-image-flip"), + ("bpy.ops.image.open*", "editors/image/editing.html#bpy-ops-image-open"), + ("bpy.ops.image.pack*", "editors/image/editing.html#bpy-ops-image-pack"), + ("bpy.ops.image.save*", "editors/image/editing.html#bpy-ops-image-save"), ("bpy.ops.image.tile*", "modeling/meshes/uv/workflows/udims.html#bpy-ops-image-tile"), ("bpy.ops.mesh.bevel*", "modeling/meshes/editing/edge/bevel.html#bpy-ops-mesh-bevel"), ("bpy.ops.mesh.inset*", "modeling/meshes/editing/face/inset_faces.html#bpy-ops-mesh-inset"), @@ -2002,6 +2071,7 @@ url_manual_mapping = ( ("bpy.types.spacenla*", "editors/nla/index.html#bpy-types-spacenla"), ("bpy.types.sunlight*", "render/lights/light_object.html#bpy-types-sunlight"), ("bpy.ops.clip.open*", "movie_clip/tracking/clip/editing/clip.html#bpy-ops-clip-open"), + ("bpy.ops.image.new*", "editors/image/editing.html#bpy-ops-image-new"), ("bpy.ops.mesh.fill*", "modeling/meshes/editing/face/fill.html#bpy-ops-mesh-fill"), ("bpy.ops.mesh.poke*", "modeling/meshes/editing/face/poke_faces.html#bpy-ops-mesh-poke"), ("bpy.ops.mesh.spin*", "modeling/meshes/tools/spin.html#bpy-ops-mesh-spin"), diff --git a/release/scripts/presets/camera/1_colon_2.3_inch.py b/release/scripts/presets/camera/1_colon_2.3_inch.py deleted file mode 100644 index 72548384401..00000000000 --- a/release/scripts/presets/camera/1_colon_2.3_inch.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 6.16 -bpy.context.camera.sensor_height = 4.62 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/1_inch.py b/release/scripts/presets/camera/1_inch.py new file mode 100644 index 00000000000..72b039fb978 --- /dev/null +++ b/release/scripts/presets/camera/1_inch.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 13.2 +bpy.context.camera.sensor_height = 8.80 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/1_slash_1.8_inch.py b/release/scripts/presets/camera/1_slash_1.8_inch.py new file mode 100644 index 00000000000..38e09182de6 --- /dev/null +++ b/release/scripts/presets/camera/1_slash_1.8_inch.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 7.18 +bpy.context.camera.sensor_height = 5.32 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/1_slash_2.3_inch.py b/release/scripts/presets/camera/1_slash_2.3_inch.py new file mode 100644 index 00000000000..4d55738f4ed --- /dev/null +++ b/release/scripts/presets/camera/1_slash_2.3_inch.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 6.17 +bpy.context.camera.sensor_height = 4.55 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/1_colon_2.5_inch.py b/release/scripts/presets/camera/1_slash_2.5_inch.py index 90f60e7d7f0..cbdb6f3cbe0 100644 --- a/release/scripts/presets/camera/1_colon_2.5_inch.py +++ b/release/scripts/presets/camera/1_slash_2.5_inch.py @@ -1,4 +1,4 @@ import bpy bpy.context.camera.sensor_width = 5.76 bpy.context.camera.sensor_height = 4.29 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/1_slash_2.7_inch.py b/release/scripts/presets/camera/1_slash_2.7_inch.py new file mode 100644 index 00000000000..5ccfa4ab555 --- /dev/null +++ b/release/scripts/presets/camera/1_slash_2.7_inch.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 5.37 +bpy.context.camera.sensor_height = 4.04 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/iPhone_4.py b/release/scripts/presets/camera/1_slash_3.2_inch.py index 1e43cd11494..1963f7ec048 100644 --- a/release/scripts/presets/camera/iPhone_4.py +++ b/release/scripts/presets/camera/1_slash_3.2_inch.py @@ -1,5 +1,4 @@ import bpy bpy.context.camera.sensor_width = 4.54 bpy.context.camera.sensor_height = 3.42 -bpy.context.camera.lens = 3.85 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/2_colon_3_inch.py b/release/scripts/presets/camera/2_colon_3_inch.py deleted file mode 100644 index 46436970efc..00000000000 --- a/release/scripts/presets/camera/2_colon_3_inch.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 9.6 -bpy.context.camera.sensor_height = 5.4 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/2_slash_3_inch.py b/release/scripts/presets/camera/2_slash_3_inch.py new file mode 100644 index 00000000000..25b46016800 --- /dev/null +++ b/release/scripts/presets/camera/2_slash_3_inch.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 8.8 +bpy.context.camera.sensor_height = 6.6 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/4_colon_3_inch.py b/release/scripts/presets/camera/4_colon_3_inch.py deleted file mode 100644 index 88346c01ef8..00000000000 --- a/release/scripts/presets/camera/4_colon_3_inch.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 17.31 -bpy.context.camera.sensor_height = 12.98 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/APS-C.py b/release/scripts/presets/camera/APS-C.py new file mode 100644 index 00000000000..84e40825248 --- /dev/null +++ b/release/scripts/presets/camera/APS-C.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 23.6 +bpy.context.camera.sensor_height = 15.6 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/APS-C_(Canon).py b/release/scripts/presets/camera/APS-C_(Canon).py new file mode 100644 index 00000000000..55f20ce0eac --- /dev/null +++ b/release/scripts/presets/camera/APS-C_(Canon).py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 22.30 +bpy.context.camera.sensor_height = 14.90 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Canon_APS-H.py b/release/scripts/presets/camera/APS-H_(Canon).py index d3b61d1aa46..d63f733280b 100644 --- a/release/scripts/presets/camera/Canon_APS-H.py +++ b/release/scripts/presets/camera/APS-H_(Canon).py @@ -1,4 +1,4 @@ import bpy bpy.context.camera.sensor_width = 27.90 bpy.context.camera.sensor_height = 18.60 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Analog_16mm.py b/release/scripts/presets/camera/Analog_16mm.py new file mode 100644 index 00000000000..aa98eaf2408 --- /dev/null +++ b/release/scripts/presets/camera/Analog_16mm.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 10.26 +bpy.context.camera.sensor_height = 7.49 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Analog_35mm.py b/release/scripts/presets/camera/Analog_35mm.py new file mode 100644 index 00000000000..a0dee1f0166 --- /dev/null +++ b/release/scripts/presets/camera/Analog_35mm.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 22 +bpy.context.camera.sensor_height = 16 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Analog_65mm.py b/release/scripts/presets/camera/Analog_65mm.py new file mode 100644 index 00000000000..8de91ac0ee3 --- /dev/null +++ b/release/scripts/presets/camera/Analog_65mm.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 52.45 +bpy.context.camera.sensor_height = 23.01 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Analog_IMAX.py b/release/scripts/presets/camera/Analog_IMAX.py new file mode 100644 index 00000000000..5a445f3de8c --- /dev/null +++ b/release/scripts/presets/camera/Analog_IMAX.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 71.41 +bpy.context.camera.sensor_height = 52.63 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Analog_Super_16.py b/release/scripts/presets/camera/Analog_Super_16.py new file mode 100644 index 00000000000..a340a31dc25 --- /dev/null +++ b/release/scripts/presets/camera/Analog_Super_16.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 12.35 +bpy.context.camera.sensor_height = 7.42 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Super_35_Film.py b/release/scripts/presets/camera/Analog_Super_35.py index b22ff545c68..3c8f1837253 100644 --- a/release/scripts/presets/camera/Super_35_Film.py +++ b/release/scripts/presets/camera/Analog_Super_35.py @@ -1,4 +1,4 @@ import bpy bpy.context.camera.sensor_width = 24.89 bpy.context.camera.sensor_height = 18.66 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Arri_Alexa.py b/release/scripts/presets/camera/Arri_Alexa.py deleted file mode 100644 index 6a6cdfee12b..00000000000 --- a/release/scripts/presets/camera/Arri_Alexa.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 23.760 -bpy.context.camera.sensor_height = 13.365 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Arri_Alexa_65.py b/release/scripts/presets/camera/Arri_Alexa_65.py new file mode 100644 index 00000000000..b1467709949 --- /dev/null +++ b/release/scripts/presets/camera/Arri_Alexa_65.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 54.12 +bpy.context.camera.sensor_height = 25.58 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Arri_Alexa_LF.py b/release/scripts/presets/camera/Arri_Alexa_LF.py new file mode 100644 index 00000000000..1cde94fce8d --- /dev/null +++ b/release/scripts/presets/camera/Arri_Alexa_LF.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 36.70 +bpy.context.camera.sensor_height = 25.54 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Arri_Alexa_Mini_&_SXT.py b/release/scripts/presets/camera/Arri_Alexa_Mini_&_SXT.py new file mode 100644 index 00000000000..0f61d35a0f9 --- /dev/null +++ b/release/scripts/presets/camera/Arri_Alexa_Mini_&_SXT.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 29.90 +bpy.context.camera.sensor_height = 15.77 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Blackmagic_Cinema_Camera.py b/release/scripts/presets/camera/Blackmagic_Cinema_Camera.py deleted file mode 100644 index 6fde30756da..00000000000 --- a/release/scripts/presets/camera/Blackmagic_Cinema_Camera.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 15.81 -bpy.context.camera.sensor_height = 8.88 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Blackmagic_Pocket_Cinema_Camera.py b/release/scripts/presets/camera/Blackmagic_Pocket_&_Studio.py index bb2b172919e..260bfbaf94f 100644 --- a/release/scripts/presets/camera/Blackmagic_Pocket_Cinema_Camera.py +++ b/release/scripts/presets/camera/Blackmagic_Pocket_&_Studio.py @@ -1,4 +1,4 @@ import bpy bpy.context.camera.sensor_width = 12.48 bpy.context.camera.sensor_height = 7.02 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Blackmagic_Pocket_4K.py b/release/scripts/presets/camera/Blackmagic_Pocket_4K.py new file mode 100644 index 00000000000..dc057397828 --- /dev/null +++ b/release/scripts/presets/camera/Blackmagic_Pocket_4K.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 18.96 +bpy.context.camera.sensor_height = 10.00 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Blackmagic_Pocket_6k.py b/release/scripts/presets/camera/Blackmagic_Pocket_6k.py new file mode 100644 index 00000000000..a483f3d5f98 --- /dev/null +++ b/release/scripts/presets/camera/Blackmagic_Pocket_6k.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 23.10 +bpy.context.camera.sensor_height = 12.99 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Blackmagic_Production_Camera_4K.py b/release/scripts/presets/camera/Blackmagic_Production_Camera_4K.py deleted file mode 100644 index dbc12c5aa68..00000000000 --- a/release/scripts/presets/camera/Blackmagic_Production_Camera_4K.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 21.12 -bpy.context.camera.sensor_height = 11.88 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Blackmagic_URSA_4.6K.py b/release/scripts/presets/camera/Blackmagic_URSA_4.6K.py new file mode 100644 index 00000000000..c71e42d72d3 --- /dev/null +++ b/release/scripts/presets/camera/Blackmagic_URSA_4.6K.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 25.34 +bpy.context.camera.sensor_height = 14.25 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Blender.py b/release/scripts/presets/camera/Blender.py deleted file mode 100644 index ca4906fbb39..00000000000 --- a/release/scripts/presets/camera/Blender.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 32 -bpy.context.camera.sensor_height = 18 -bpy.context.camera.sensor_fit = 'AUTO' diff --git a/release/scripts/presets/camera/Canon_1100D.py b/release/scripts/presets/camera/Canon_1100D.py deleted file mode 100644 index e665e9e95d5..00000000000 --- a/release/scripts/presets/camera/Canon_1100D.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 22.2 -bpy.context.camera.sensor_height = 14.7 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Canon_APS-C.py b/release/scripts/presets/camera/Canon_APS-C.py deleted file mode 100644 index 95108b2187f..00000000000 --- a/release/scripts/presets/camera/Canon_APS-C.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 22.3 -bpy.context.camera.sensor_height = 14.9 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Canon_C300.py b/release/scripts/presets/camera/Canon_C300.py deleted file mode 100644 index e22af779854..00000000000 --- a/release/scripts/presets/camera/Canon_C300.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 24.4 -bpy.context.camera.sensor_height = 13.5 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Foveon_(Sigma).py b/release/scripts/presets/camera/Foveon_(Sigma).py new file mode 100644 index 00000000000..e6a1a0ed344 --- /dev/null +++ b/release/scripts/presets/camera/Foveon_(Sigma).py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 20.70 +bpy.context.camera.sensor_height = 13.80 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Full_Frame_35mm_Camera.py b/release/scripts/presets/camera/Fullframe.py index c8017331b28..95fb4afc10b 100644 --- a/release/scripts/presets/camera/Full_Frame_35mm_Camera.py +++ b/release/scripts/presets/camera/Fullframe.py @@ -1,4 +1,4 @@ import bpy bpy.context.camera.sensor_width = 36 bpy.context.camera.sensor_height = 24 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/GoPro_Hero3_Black.py b/release/scripts/presets/camera/GoPro_Hero3_Black.py deleted file mode 100644 index e294f802a02..00000000000 --- a/release/scripts/presets/camera/GoPro_Hero3_Black.py +++ /dev/null @@ -1,6 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 6.16 -bpy.context.camera.sensor_height = 4.62 -bpy.context.camera.lens = 2.77 - -bpy.context.camera.sensor_fit = 'AUTO' diff --git a/release/scripts/presets/camera/GoPro_Hero3_Silver.py b/release/scripts/presets/camera/GoPro_Hero3_Silver.py deleted file mode 100644 index 247bd7c4aaf..00000000000 --- a/release/scripts/presets/camera/GoPro_Hero3_Silver.py +++ /dev/null @@ -1,6 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 5.371 -bpy.context.camera.sensor_height = 4.035 -bpy.context.camera.lens = 2.77 - -bpy.context.camera.sensor_fit = 'AUTO' diff --git a/release/scripts/presets/camera/MFT.py b/release/scripts/presets/camera/MFT.py new file mode 100644 index 00000000000..bc0dd49baa8 --- /dev/null +++ b/release/scripts/presets/camera/MFT.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 17.3 +bpy.context.camera.sensor_height = 13.0 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Medium-format_(Hasselblad).py b/release/scripts/presets/camera/Medium-format_(Hasselblad).py new file mode 100644 index 00000000000..e9b16024b79 --- /dev/null +++ b/release/scripts/presets/camera/Medium-format_(Hasselblad).py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 44 +bpy.context.camera.sensor_height = 33 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Nexus_5.py b/release/scripts/presets/camera/Nexus_5.py deleted file mode 100644 index 36e741cbba5..00000000000 --- a/release/scripts/presets/camera/Nexus_5.py +++ /dev/null @@ -1,5 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 4.5 -bpy.context.camera.sensor_height = 3.37 -bpy.context.camera.lens = 3.91 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Nikon_D3100.py b/release/scripts/presets/camera/Nikon_D3100.py deleted file mode 100644 index b4ceb3aa721..00000000000 --- a/release/scripts/presets/camera/Nikon_D3100.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 23.1 -bpy.context.camera.sensor_height = 15.4 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Nikon_DX.py b/release/scripts/presets/camera/Nikon_DX.py deleted file mode 100644 index dbe9e7fcc18..00000000000 --- a/release/scripts/presets/camera/Nikon_DX.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 23.6 -bpy.context.camera.sensor_height = 15.8 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Panasonic_AG-HVX200.py b/release/scripts/presets/camera/Panasonic_AG-HVX200.py deleted file mode 100644 index 71ad3c3a161..00000000000 --- a/release/scripts/presets/camera/Panasonic_AG-HVX200.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 4.68 -bpy.context.camera.sensor_height = 2.633 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Panasonic_LX2.py b/release/scripts/presets/camera/Panasonic_LX2.py deleted file mode 100644 index d66e02e32d4..00000000000 --- a/release/scripts/presets/camera/Panasonic_LX2.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 8.5 -bpy.context.camera.sensor_height = 4.78 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/RED_Dragon_5K.py b/release/scripts/presets/camera/RED_Dragon_5K.py new file mode 100644 index 00000000000..fa95a98f8c4 --- /dev/null +++ b/release/scripts/presets/camera/RED_Dragon_5K.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 25.60 +bpy.context.camera.sensor_height = 13.5 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/RED_Dragon_6K.py b/release/scripts/presets/camera/RED_Dragon_6K.py new file mode 100644 index 00000000000..80f7ad1bbb8 --- /dev/null +++ b/release/scripts/presets/camera/RED_Dragon_6K.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 30.70 +bpy.context.camera.sensor_height = 15.80 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/RED_Helium_8K.py b/release/scripts/presets/camera/RED_Helium_8K.py new file mode 100644 index 00000000000..0f61d35a0f9 --- /dev/null +++ b/release/scripts/presets/camera/RED_Helium_8K.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 29.90 +bpy.context.camera.sensor_height = 15.77 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/RED_Monstro_8K.py b/release/scripts/presets/camera/RED_Monstro_8K.py new file mode 100644 index 00000000000..86c382624ab --- /dev/null +++ b/release/scripts/presets/camera/RED_Monstro_8K.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 40.96 +bpy.context.camera.sensor_height = 21.60 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/Red_Epic.py b/release/scripts/presets/camera/Red_Epic.py deleted file mode 100644 index 5d71a69a33d..00000000000 --- a/release/scripts/presets/camera/Red_Epic.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 30.0 -bpy.context.camera.sensor_height = 15.0 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Red_One_2K.py b/release/scripts/presets/camera/Red_One_2K.py deleted file mode 100644 index 894aedcf9ea..00000000000 --- a/release/scripts/presets/camera/Red_One_2K.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 11.1 -bpy.context.camera.sensor_height = 6.24 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Red_One_3K.py b/release/scripts/presets/camera/Red_One_3K.py deleted file mode 100644 index 9ac84c1485a..00000000000 --- a/release/scripts/presets/camera/Red_One_3K.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 16.65 -bpy.context.camera.sensor_height = 9.36 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Red_One_4K.py b/release/scripts/presets/camera/Red_One_4K.py deleted file mode 100644 index 067322cd07e..00000000000 --- a/release/scripts/presets/camera/Red_One_4K.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 22.2 -bpy.context.camera.sensor_height = 12.6 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Samsung_Galaxy_S3.py b/release/scripts/presets/camera/Samsung_Galaxy_S3.py deleted file mode 100644 index 23eaea7cd27..00000000000 --- a/release/scripts/presets/camera/Samsung_Galaxy_S3.py +++ /dev/null @@ -1,5 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 4.8 -bpy.context.camera.sensor_height = 3.6 -bpy.context.camera.lens = 3.70 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Samsung_Galaxy_S4.py b/release/scripts/presets/camera/Samsung_Galaxy_S4.py deleted file mode 100644 index cc929d26dac..00000000000 --- a/release/scripts/presets/camera/Samsung_Galaxy_S4.py +++ /dev/null @@ -1,5 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 4.8 -bpy.context.camera.sensor_height = 3.6 -bpy.context.camera.lens = 4.20 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Sony_A55.py b/release/scripts/presets/camera/Sony_A55.py deleted file mode 100644 index 0468deb6d4c..00000000000 --- a/release/scripts/presets/camera/Sony_A55.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 23.4 -bpy.context.camera.sensor_height = 15.6 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Sony_EX1.py b/release/scripts/presets/camera/Sony_EX1.py deleted file mode 100644 index 3c6b235f21e..00000000000 --- a/release/scripts/presets/camera/Sony_EX1.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 6.97 -bpy.context.camera.sensor_height = 3.92 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Sony_F65.py b/release/scripts/presets/camera/Sony_F65.py deleted file mode 100644 index e62b3511836..00000000000 --- a/release/scripts/presets/camera/Sony_F65.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 24.33 -bpy.context.camera.sensor_height = 12.83 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/Super_16_Film.py b/release/scripts/presets/camera/Super_16_Film.py deleted file mode 100644 index 4ca397a7e27..00000000000 --- a/release/scripts/presets/camera/Super_16_Film.py +++ /dev/null @@ -1,4 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 12.52 -bpy.context.camera.sensor_height = 7.41 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/camera/iPhone_5.py b/release/scripts/presets/camera/iPhone_5.py deleted file mode 100644 index a6b6bbc2ec5..00000000000 --- a/release/scripts/presets/camera/iPhone_5.py +++ /dev/null @@ -1,5 +0,0 @@ -import bpy -bpy.context.camera.sensor_width = 4.54 -bpy.context.camera.sensor_height = 3.42 -bpy.context.camera.lens = 4.10 -bpy.context.camera.sensor_fit = 'HORIZONTAL' diff --git a/release/scripts/presets/keyconfig/Blender.py b/release/scripts/presets/keyconfig/Blender.py index eb66c961472..222ee43432f 100644 --- a/release/scripts/presets/keyconfig/Blender.py +++ b/release/scripts/presets/keyconfig/Blender.py @@ -103,8 +103,8 @@ class Prefs(bpy.types.KeyConfigPreferences): v3d_tilde_action: EnumProperty( name="Tilde Action", items=( - ('VIEW', "Navigate", - "View operations (useful for keyboards without a numpad)", + ('OBJECT_SWITCH', "Object Switch", + "Switch the active object under the cursor (when not in object mode)", 0), ('GIZMO', "Gizmos", "Control transform gizmos", @@ -113,7 +113,7 @@ class Prefs(bpy.types.KeyConfigPreferences): description=( "Action when 'Tilde' is pressed" ), - default='VIEW', + default='OBJECT_SWITCH', update=update_fn, ) diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 6a33bc60cba..27abaa61339 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -1080,12 +1080,7 @@ def km_view3d(params): {"properties": [("use_all_regions", True), ("center", False)]}), ("view3d.view_all", {"type": 'C', "value": 'PRESS', "shift": True}, {"properties": [("center", True)]}), - op_menu_pie( - "VIEW3D_MT_view_pie" if params.v3d_tilde_action == 'VIEW' else "VIEW3D_MT_transform_gizmo_pie", - {"type": 'ACCENT_GRAVE', "value": params.pie_value}, - ), - *(() if not params.use_pie_click_drag else - (("view3d.navigate", {"type": 'ACCENT_GRAVE', "value": 'CLICK'}, None),)), + op_menu_pie("VIEW3D_MT_view_pie", {"type": 'D', "value": 'CLICK_DRAG'}), ("view3d.navigate", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "shift": True}, None), # Numpad views. ("view3d.view_camera", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), @@ -1329,6 +1324,32 @@ def km_view3d(params): op_tool_cycle("builtin.select_box", {"type": 'W', "value": 'PRESS'}), ]) + # Tilda key. + if params.use_pie_click_drag: + items.extend([ + ("object.transfer_mode", + {"type": 'ACCENT_GRAVE', "value": 'CLICK' if params.use_pie_click_drag else 'PRESS'}, + None), + op_menu_pie( + "VIEW3D_MT_transform_gizmo_pie", + {"type": 'ACCENT_GRAVE', "value": 'CLICK_DRAG'}, + ) + ]) + else: + if params.v3d_tilde_action == 'OBJECT_SWITCH': + items.append( + ("object.transfer_mode", + {"type": 'ACCENT_GRAVE', "value": 'PRESS'}, + {"properties": [("use_eyedropper", False)]}) + ) + else: + items.append( + op_menu_pie( + "VIEW3D_MT_transform_gizmo_pie", + {"type": 'ACCENT_GRAVE', "value": 'PRESS'}, + ) + ) + return keymap @@ -2525,6 +2546,7 @@ def km_sequencercommon(params): {"properties": [("data_path", 'scene.sequence_editor.show_overlay')]}), ("wm.context_toggle_enum", {"type": 'TAB', "value": 'PRESS', "ctrl": True}, {"properties": [("data_path", 'space_data.view_type'), ("value_1", 'SEQUENCER'), ("value_2", 'PREVIEW')]}), + ("sequencer.refresh_all", {"type": 'R', "value": 'PRESS', "ctrl": True}, None), ]) if params.select_mouse == 'LEFTMOUSE' and not params.legacy: @@ -2565,7 +2587,6 @@ def km_sequencer(params): ("sequencer.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None), ("sequencer.reload", {"type": 'R', "value": 'PRESS', "shift": True, "alt": True}, {"properties": [("adjust_length", True)]}), - ("sequencer.refresh_all", {"type": 'R', "value": 'PRESS', "ctrl": True}, None), ("sequencer.offset_clear", {"type": 'O', "value": 'PRESS', "alt": True}, None), ("sequencer.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), ("sequencer.delete", {"type": 'X', "value": 'PRESS'}, None), @@ -2573,7 +2594,7 @@ def km_sequencer(params): ("sequencer.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), ("sequencer.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), ("sequencer.paste", {"type": 'V', "value": 'PRESS', "ctrl": True, "shift": True}, - {"properties": [("keep_offset", True)]}), + {"properties": [("keep_offset", True)]}), ("sequencer.images_separate", {"type": 'Y', "value": 'PRESS'}, None), ("sequencer.meta_toggle", {"type": 'TAB', "value": 'PRESS'}, None), ("sequencer.meta_make", {"type": 'G', "value": 'PRESS', "ctrl": True}, None), @@ -4486,8 +4507,6 @@ def km_sculpt(params): ) items.extend([ - # Transfer Sculpt Mode (release to avoid conflict with grease pencil drawing). - ("object.transfer_mode", {"type": 'D', "value": 'RELEASE'}, None), # Brush strokes ("sculpt.brush_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS'}, {"properties": [("mode", 'NORMAL')]}), diff --git a/release/scripts/presets/tracking_camera/1__colon__2.3_inch.py b/release/scripts/presets/tracking_camera/1__colon__2.3_inch.py deleted file mode 100644 index 9fcd40fbb65..00000000000 --- a/release/scripts/presets/tracking_camera/1__colon__2.3_inch.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 6.16 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/1__colon__2.5_inch.py b/release/scripts/presets/tracking_camera/1__colon__2.5_inch.py deleted file mode 100644 index 2f064e59838..00000000000 --- a/release/scripts/presets/tracking_camera/1__colon__2.5_inch.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 5.76 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/1_inch.py b/release/scripts/presets/tracking_camera/1_inch.py new file mode 100644 index 00000000000..72b039fb978 --- /dev/null +++ b/release/scripts/presets/tracking_camera/1_inch.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 13.2 +bpy.context.camera.sensor_height = 8.80 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/1_slash_1.8_inch.py b/release/scripts/presets/tracking_camera/1_slash_1.8_inch.py new file mode 100644 index 00000000000..38e09182de6 --- /dev/null +++ b/release/scripts/presets/tracking_camera/1_slash_1.8_inch.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 7.18 +bpy.context.camera.sensor_height = 5.32 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/1_slash_2.3_inch.py b/release/scripts/presets/tracking_camera/1_slash_2.3_inch.py new file mode 100644 index 00000000000..4d55738f4ed --- /dev/null +++ b/release/scripts/presets/tracking_camera/1_slash_2.3_inch.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 6.17 +bpy.context.camera.sensor_height = 4.55 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/GoPro_Hero3_White.py b/release/scripts/presets/tracking_camera/1_slash_2.5_inch.py index 948f838f5d6..cbdb6f3cbe0 100644 --- a/release/scripts/presets/camera/GoPro_Hero3_White.py +++ b/release/scripts/presets/tracking_camera/1_slash_2.5_inch.py @@ -1,6 +1,4 @@ import bpy bpy.context.camera.sensor_width = 5.76 bpy.context.camera.sensor_height = 4.29 -bpy.context.camera.lens = 2.77 - -bpy.context.camera.sensor_fit = 'AUTO' +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/1_slash_2.7_inch.py b/release/scripts/presets/tracking_camera/1_slash_2.7_inch.py new file mode 100644 index 00000000000..5ccfa4ab555 --- /dev/null +++ b/release/scripts/presets/tracking_camera/1_slash_2.7_inch.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 5.37 +bpy.context.camera.sensor_height = 4.04 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/camera/iPhone_4S.py b/release/scripts/presets/tracking_camera/1_slash_3.2_inch.py index 1139b7395b5..1963f7ec048 100644 --- a/release/scripts/presets/camera/iPhone_4S.py +++ b/release/scripts/presets/tracking_camera/1_slash_3.2_inch.py @@ -1,5 +1,4 @@ import bpy bpy.context.camera.sensor_width = 4.54 bpy.context.camera.sensor_height = 3.42 -bpy.context.camera.lens = 4.28 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/2__colon__3_inch.py b/release/scripts/presets/tracking_camera/2__colon__3_inch.py deleted file mode 100644 index 8936e627d77..00000000000 --- a/release/scripts/presets/tracking_camera/2__colon__3_inch.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 9.6 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/2_slash_3_inch.py b/release/scripts/presets/tracking_camera/2_slash_3_inch.py new file mode 100644 index 00000000000..25b46016800 --- /dev/null +++ b/release/scripts/presets/tracking_camera/2_slash_3_inch.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 8.8 +bpy.context.camera.sensor_height = 6.6 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/4__colon__3_inch.py b/release/scripts/presets/tracking_camera/4__colon__3_inch.py deleted file mode 100644 index 2317715e1b4..00000000000 --- a/release/scripts/presets/tracking_camera/4__colon__3_inch.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 17.31 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/APS-C.py b/release/scripts/presets/tracking_camera/APS-C.py new file mode 100644 index 00000000000..84e40825248 --- /dev/null +++ b/release/scripts/presets/tracking_camera/APS-C.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 23.6 +bpy.context.camera.sensor_height = 15.6 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/APS-C_(Canon).py b/release/scripts/presets/tracking_camera/APS-C_(Canon).py new file mode 100644 index 00000000000..55f20ce0eac --- /dev/null +++ b/release/scripts/presets/tracking_camera/APS-C_(Canon).py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 22.30 +bpy.context.camera.sensor_height = 14.90 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/APS-H_(Canon).py b/release/scripts/presets/tracking_camera/APS-H_(Canon).py new file mode 100644 index 00000000000..d63f733280b --- /dev/null +++ b/release/scripts/presets/tracking_camera/APS-H_(Canon).py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 27.90 +bpy.context.camera.sensor_height = 18.60 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Analog_16mm.py b/release/scripts/presets/tracking_camera/Analog_16mm.py new file mode 100644 index 00000000000..aa98eaf2408 --- /dev/null +++ b/release/scripts/presets/tracking_camera/Analog_16mm.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 10.26 +bpy.context.camera.sensor_height = 7.49 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Analog_35mm.py b/release/scripts/presets/tracking_camera/Analog_35mm.py new file mode 100644 index 00000000000..a0dee1f0166 --- /dev/null +++ b/release/scripts/presets/tracking_camera/Analog_35mm.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 22 +bpy.context.camera.sensor_height = 16 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Analog_65mm.py b/release/scripts/presets/tracking_camera/Analog_65mm.py new file mode 100644 index 00000000000..8de91ac0ee3 --- /dev/null +++ b/release/scripts/presets/tracking_camera/Analog_65mm.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 52.45 +bpy.context.camera.sensor_height = 23.01 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Analog_IMAX.py b/release/scripts/presets/tracking_camera/Analog_IMAX.py new file mode 100644 index 00000000000..5a445f3de8c --- /dev/null +++ b/release/scripts/presets/tracking_camera/Analog_IMAX.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 71.41 +bpy.context.camera.sensor_height = 52.63 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Analog_Super_16.py b/release/scripts/presets/tracking_camera/Analog_Super_16.py new file mode 100644 index 00000000000..a340a31dc25 --- /dev/null +++ b/release/scripts/presets/tracking_camera/Analog_Super_16.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 12.35 +bpy.context.camera.sensor_height = 7.42 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Analog_Super_35.py b/release/scripts/presets/tracking_camera/Analog_Super_35.py new file mode 100644 index 00000000000..3c8f1837253 --- /dev/null +++ b/release/scripts/presets/tracking_camera/Analog_Super_35.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 24.89 +bpy.context.camera.sensor_height = 18.66 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Arri_Alexa.py b/release/scripts/presets/tracking_camera/Arri_Alexa.py deleted file mode 100644 index ded361ec965..00000000000 --- a/release/scripts/presets/tracking_camera/Arri_Alexa.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 23.76 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Arri_Alexa_65.py b/release/scripts/presets/tracking_camera/Arri_Alexa_65.py new file mode 100644 index 00000000000..b1467709949 --- /dev/null +++ b/release/scripts/presets/tracking_camera/Arri_Alexa_65.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 54.12 +bpy.context.camera.sensor_height = 25.58 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Arri_Alexa_LF.py b/release/scripts/presets/tracking_camera/Arri_Alexa_LF.py new file mode 100644 index 00000000000..1cde94fce8d --- /dev/null +++ b/release/scripts/presets/tracking_camera/Arri_Alexa_LF.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 36.70 +bpy.context.camera.sensor_height = 25.54 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Arri_Alexa_Mini_&_SXT.py b/release/scripts/presets/tracking_camera/Arri_Alexa_Mini_&_SXT.py new file mode 100644 index 00000000000..0f61d35a0f9 --- /dev/null +++ b/release/scripts/presets/tracking_camera/Arri_Alexa_Mini_&_SXT.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 29.90 +bpy.context.camera.sensor_height = 15.77 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Blackmagic_Cinema_Camera.py b/release/scripts/presets/tracking_camera/Blackmagic_Cinema_Camera.py deleted file mode 100644 index f84d0a19d22..00000000000 --- a/release/scripts/presets/tracking_camera/Blackmagic_Cinema_Camera.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 15.81 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Blackmagic_Pocket_&_Studio.py b/release/scripts/presets/tracking_camera/Blackmagic_Pocket_&_Studio.py new file mode 100644 index 00000000000..260bfbaf94f --- /dev/null +++ b/release/scripts/presets/tracking_camera/Blackmagic_Pocket_&_Studio.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 12.48 +bpy.context.camera.sensor_height = 7.02 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Blackmagic_Pocket_4K.py b/release/scripts/presets/tracking_camera/Blackmagic_Pocket_4K.py new file mode 100644 index 00000000000..dc057397828 --- /dev/null +++ b/release/scripts/presets/tracking_camera/Blackmagic_Pocket_4K.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 18.96 +bpy.context.camera.sensor_height = 10.00 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Blackmagic_Pocket_6k.py b/release/scripts/presets/tracking_camera/Blackmagic_Pocket_6k.py new file mode 100644 index 00000000000..a483f3d5f98 --- /dev/null +++ b/release/scripts/presets/tracking_camera/Blackmagic_Pocket_6k.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 23.10 +bpy.context.camera.sensor_height = 12.99 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Blackmagic_Pocket_Cinema_Camera.py b/release/scripts/presets/tracking_camera/Blackmagic_Pocket_Cinema_Camera.py deleted file mode 100644 index a9c81f47c21..00000000000 --- a/release/scripts/presets/tracking_camera/Blackmagic_Pocket_Cinema_Camera.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 12.48 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Blackmagic_Production_Camera_4K.py b/release/scripts/presets/tracking_camera/Blackmagic_Production_Camera_4K.py deleted file mode 100644 index d644d2a26c9..00000000000 --- a/release/scripts/presets/tracking_camera/Blackmagic_Production_Camera_4K.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 21.12 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Blackmagic_URSA_4.6K.py b/release/scripts/presets/tracking_camera/Blackmagic_URSA_4.6K.py new file mode 100644 index 00000000000..c71e42d72d3 --- /dev/null +++ b/release/scripts/presets/tracking_camera/Blackmagic_URSA_4.6K.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 25.34 +bpy.context.camera.sensor_height = 14.25 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Blender.py b/release/scripts/presets/tracking_camera/Blender.py deleted file mode 100644 index 507cedac4fc..00000000000 --- a/release/scripts/presets/tracking_camera/Blender.py +++ /dev/null @@ -1,10 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 32.0 -camera.units = 'MILLIMETERS' -camera.focal_length = 35.0 -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Canon_1100D.py b/release/scripts/presets/tracking_camera/Canon_1100D.py deleted file mode 100644 index 96d6d456337..00000000000 --- a/release/scripts/presets/tracking_camera/Canon_1100D.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 22.2 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Canon_APS-C.py b/release/scripts/presets/tracking_camera/Canon_APS-C.py deleted file mode 100644 index cc4da545272..00000000000 --- a/release/scripts/presets/tracking_camera/Canon_APS-C.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 22.3 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Canon_APS-H.py b/release/scripts/presets/tracking_camera/Canon_APS-H.py deleted file mode 100644 index 853edd5dcba..00000000000 --- a/release/scripts/presets/tracking_camera/Canon_APS-H.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 27.90 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Canon_C300.py b/release/scripts/presets/tracking_camera/Canon_C300.py deleted file mode 100644 index 809f8f432f8..00000000000 --- a/release/scripts/presets/tracking_camera/Canon_C300.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 24.4 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Foveon_(Sigma).py b/release/scripts/presets/tracking_camera/Foveon_(Sigma).py new file mode 100644 index 00000000000..e6a1a0ed344 --- /dev/null +++ b/release/scripts/presets/tracking_camera/Foveon_(Sigma).py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 20.70 +bpy.context.camera.sensor_height = 13.80 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Full_Frame_35mm_Camera.py b/release/scripts/presets/tracking_camera/Full_Frame_35mm_Camera.py deleted file mode 100644 index 0f3da0b4d72..00000000000 --- a/release/scripts/presets/tracking_camera/Full_Frame_35mm_Camera.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 36 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Fullframe.py b/release/scripts/presets/tracking_camera/Fullframe.py new file mode 100644 index 00000000000..95fb4afc10b --- /dev/null +++ b/release/scripts/presets/tracking_camera/Fullframe.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 36 +bpy.context.camera.sensor_height = 24 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/GoPro_Hero3_Black.py b/release/scripts/presets/tracking_camera/GoPro_Hero3_Black.py deleted file mode 100644 index 29851352284..00000000000 --- a/release/scripts/presets/tracking_camera/GoPro_Hero3_Black.py +++ /dev/null @@ -1,10 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 6.16 -camera.units = 'MILLIMETERS' -camera.focal_length = 2.77 -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/GoPro_Hero3_Silver.py b/release/scripts/presets/tracking_camera/GoPro_Hero3_Silver.py deleted file mode 100644 index 9e08cf283a7..00000000000 --- a/release/scripts/presets/tracking_camera/GoPro_Hero3_Silver.py +++ /dev/null @@ -1,10 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 5.371 -camera.units = 'MILLIMETERS' -camera.focal_length = 2.77 -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/GoPro_Hero3_White.py b/release/scripts/presets/tracking_camera/GoPro_Hero3_White.py deleted file mode 100644 index 6b1f9d97e81..00000000000 --- a/release/scripts/presets/tracking_camera/GoPro_Hero3_White.py +++ /dev/null @@ -1,10 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 5.76 -camera.units = 'MILLIMETERS' -camera.focal_length = 2.77 -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/MFT.py b/release/scripts/presets/tracking_camera/MFT.py new file mode 100644 index 00000000000..bc0dd49baa8 --- /dev/null +++ b/release/scripts/presets/tracking_camera/MFT.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 17.3 +bpy.context.camera.sensor_height = 13.0 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Medium-format_(Hasselblad).py b/release/scripts/presets/tracking_camera/Medium-format_(Hasselblad).py new file mode 100644 index 00000000000..e9b16024b79 --- /dev/null +++ b/release/scripts/presets/tracking_camera/Medium-format_(Hasselblad).py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 44 +bpy.context.camera.sensor_height = 33 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Nexus_5.py b/release/scripts/presets/tracking_camera/Nexus_5.py deleted file mode 100644 index 172c8e93bfd..00000000000 --- a/release/scripts/presets/tracking_camera/Nexus_5.py +++ /dev/null @@ -1,10 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 4.5 -camera.units = 'MILLIMETERS' -camera.focal_length = 3.91 -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Nikon_D3100.py b/release/scripts/presets/tracking_camera/Nikon_D3100.py deleted file mode 100644 index 44646f8b112..00000000000 --- a/release/scripts/presets/tracking_camera/Nikon_D3100.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 23.1 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Nikon_DX.py b/release/scripts/presets/tracking_camera/Nikon_DX.py deleted file mode 100644 index 8d9e3505e3f..00000000000 --- a/release/scripts/presets/tracking_camera/Nikon_DX.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 23.6 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Panasonic_AG-HVX200.py b/release/scripts/presets/tracking_camera/Panasonic_AG-HVX200.py deleted file mode 100644 index 49cc71fa5da..00000000000 --- a/release/scripts/presets/tracking_camera/Panasonic_AG-HVX200.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 4.68 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1.5 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Panasonic_LX2.py b/release/scripts/presets/tracking_camera/Panasonic_LX2.py deleted file mode 100644 index f9ffcb8ec03..00000000000 --- a/release/scripts/presets/tracking_camera/Panasonic_LX2.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 8.5 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/RED_Dragon_5K.py b/release/scripts/presets/tracking_camera/RED_Dragon_5K.py new file mode 100644 index 00000000000..fa95a98f8c4 --- /dev/null +++ b/release/scripts/presets/tracking_camera/RED_Dragon_5K.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 25.60 +bpy.context.camera.sensor_height = 13.5 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/RED_Dragon_6K.py b/release/scripts/presets/tracking_camera/RED_Dragon_6K.py new file mode 100644 index 00000000000..80f7ad1bbb8 --- /dev/null +++ b/release/scripts/presets/tracking_camera/RED_Dragon_6K.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 30.70 +bpy.context.camera.sensor_height = 15.80 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/RED_Helium_8K.py b/release/scripts/presets/tracking_camera/RED_Helium_8K.py new file mode 100644 index 00000000000..0f61d35a0f9 --- /dev/null +++ b/release/scripts/presets/tracking_camera/RED_Helium_8K.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 29.90 +bpy.context.camera.sensor_height = 15.77 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/RED_Monstro_8K.py b/release/scripts/presets/tracking_camera/RED_Monstro_8K.py new file mode 100644 index 00000000000..86c382624ab --- /dev/null +++ b/release/scripts/presets/tracking_camera/RED_Monstro_8K.py @@ -0,0 +1,4 @@ +import bpy +bpy.context.camera.sensor_width = 40.96 +bpy.context.camera.sensor_height = 21.60 +bpy.context.camera.sensor_fit = 'HORIZONTAL'
\ No newline at end of file diff --git a/release/scripts/presets/tracking_camera/Red_Epic.py b/release/scripts/presets/tracking_camera/Red_Epic.py deleted file mode 100644 index c0790e6baed..00000000000 --- a/release/scripts/presets/tracking_camera/Red_Epic.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 30.0 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Red_One_2K.py b/release/scripts/presets/tracking_camera/Red_One_2K.py deleted file mode 100644 index fa9585b5e08..00000000000 --- a/release/scripts/presets/tracking_camera/Red_One_2K.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 11.1 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Red_One_3K.py b/release/scripts/presets/tracking_camera/Red_One_3K.py deleted file mode 100644 index 5a1b7472109..00000000000 --- a/release/scripts/presets/tracking_camera/Red_One_3K.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 16.65 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Red_One_4K.py b/release/scripts/presets/tracking_camera/Red_One_4K.py deleted file mode 100644 index 96d6d456337..00000000000 --- a/release/scripts/presets/tracking_camera/Red_One_4K.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 22.2 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Samsung_Galaxy_S3.py b/release/scripts/presets/tracking_camera/Samsung_Galaxy_S3.py deleted file mode 100644 index d10994e45f5..00000000000 --- a/release/scripts/presets/tracking_camera/Samsung_Galaxy_S3.py +++ /dev/null @@ -1,10 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 4.8 -camera.units = 'MILLIMETERS' -camera.focal_length = 3.70 -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Samsung_Galaxy_S4.py b/release/scripts/presets/tracking_camera/Samsung_Galaxy_S4.py deleted file mode 100644 index c5fef80b3de..00000000000 --- a/release/scripts/presets/tracking_camera/Samsung_Galaxy_S4.py +++ /dev/null @@ -1,10 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 4.8 -camera.units = 'MILLIMETERS' -camera.focal_length = 4.2 -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Sony_A55.py b/release/scripts/presets/tracking_camera/Sony_A55.py deleted file mode 100644 index 26920d06f94..00000000000 --- a/release/scripts/presets/tracking_camera/Sony_A55.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 23.4 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Sony_EX1.py b/release/scripts/presets/tracking_camera/Sony_EX1.py deleted file mode 100644 index 2b99c91d221..00000000000 --- a/release/scripts/presets/tracking_camera/Sony_EX1.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 6.97 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Sony_F65.py b/release/scripts/presets/tracking_camera/Sony_F65.py deleted file mode 100644 index 7da93fd5d47..00000000000 --- a/release/scripts/presets/tracking_camera/Sony_F65.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 24.33 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Super_16.py b/release/scripts/presets/tracking_camera/Super_16.py deleted file mode 100644 index e94da9a99ba..00000000000 --- a/release/scripts/presets/tracking_camera/Super_16.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 12.52 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/Super_35.py b/release/scripts/presets/tracking_camera/Super_35.py deleted file mode 100644 index e07edc3a22c..00000000000 --- a/release/scripts/presets/tracking_camera/Super_35.py +++ /dev/null @@ -1,9 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 24.89 -camera.units = 'MILLIMETERS' -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/iPhone_4.py b/release/scripts/presets/tracking_camera/iPhone_4.py deleted file mode 100644 index 220e5e08147..00000000000 --- a/release/scripts/presets/tracking_camera/iPhone_4.py +++ /dev/null @@ -1,10 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 4.54 -camera.units = 'MILLIMETERS' -camera.focal_length = 3.85 -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/iPhone_4S.py b/release/scripts/presets/tracking_camera/iPhone_4S.py deleted file mode 100644 index 686cffc8f99..00000000000 --- a/release/scripts/presets/tracking_camera/iPhone_4S.py +++ /dev/null @@ -1,10 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 4.54 -camera.units = 'MILLIMETERS' -camera.focal_length = 4.28 -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/presets/tracking_camera/iPhone_5.py b/release/scripts/presets/tracking_camera/iPhone_5.py deleted file mode 100644 index d8e05da8425..00000000000 --- a/release/scripts/presets/tracking_camera/iPhone_5.py +++ /dev/null @@ -1,10 +0,0 @@ -import bpy -camera = bpy.context.edit_movieclip.tracking.camera - -camera.sensor_width = 4.54 -camera.units = 'MILLIMETERS' -camera.focal_length = 4.10 -camera.pixel_aspect = 1 -camera.k1 = 0.0 -camera.k2 = 0.0 -camera.k3 = 0.0 diff --git a/release/scripts/startup/bl_operators/geometry_nodes.py b/release/scripts/startup/bl_operators/geometry_nodes.py index 0c7a2a01b7a..71ef89a066b 100644 --- a/release/scripts/startup/bl_operators/geometry_nodes.py +++ b/release/scripts/startup/bl_operators/geometry_nodes.py @@ -42,8 +42,8 @@ def geometry_node_group_empty_new(): def geometry_modifier_poll(context): ob = context.object - # Test object support for geometry node modifier (No volume, curve, or hair object support yet) - if not ob or ob.type not in {'MESH', 'POINTCLOUD'}: + # Test object support for geometry node modifier (No curve, or hair object support yet) + if not ob or ob.type not in {'MESH', 'POINTCLOUD', 'VOLUME'}: return False return True diff --git a/release/scripts/startup/bl_operators/userpref.py b/release/scripts/startup/bl_operators/userpref.py index 3969386bad7..dd84dfa2df8 100644 --- a/release/scripts/startup/bl_operators/userpref.py +++ b/release/scripts/startup/bl_operators/userpref.py @@ -153,7 +153,7 @@ class PREFERENCES_OT_copy_prev(Operator): def execute(self, _context): import shutil - shutil.copytree(self._old_path(), self._new_path(), dirs_exist_ok=True) + shutil.copytree(self._old_path(), self._new_path(), dirs_exist_ok=True, symlinks=True) # reload preferences and recent-files.txt bpy.ops.wm.read_userpref() diff --git a/release/scripts/startup/bl_operators/uvcalc_lightmap.py b/release/scripts/startup/bl_operators/uvcalc_lightmap.py index 29c17711c2a..6ba8750e9df 100644 --- a/release/scripts/startup/bl_operators/uvcalc_lightmap.py +++ b/release/scripts/startup/bl_operators/uvcalc_lightmap.py @@ -628,7 +628,7 @@ class LightMapPack(Operator): name="New Image", description=( "Assign new images for every mesh (only one if " - "shared tex space enabled)" + "Share Texture Space is enabled)" ), default=False, ) diff --git a/release/scripts/startup/bl_ui/properties_constraint.py b/release/scripts/startup/bl_ui/properties_constraint.py index e835e577953..a88def34767 100644 --- a/release/scripts/startup/bl_ui/properties_constraint.py +++ b/release/scripts/startup/bl_ui/properties_constraint.py @@ -245,6 +245,7 @@ class ConstraintButtonsPanel: sub.prop(con, "max_z", text="Max") row.label(icon='BLANK1') + layout.prop(con, "euler_order", text="Order") layout.prop(con, "use_transform_limit") self.space_template(layout, con, target=False, owner=True) diff --git a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py index 55a49878b71..2e89ddcb1d4 100644 --- a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py +++ b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py @@ -407,7 +407,7 @@ class AnnotationDataPanel: bl_options = {'DEFAULT_CLOSED'} def draw_header(self, context): - if context.space_data.type not in {'VIEW_3D', 'TOPBAR'}: + if context.space_data.type not in {'VIEW_3D', 'TOPBAR', 'SEQUENCE_EDITOR'}: self.layout.prop(context.space_data, "show_annotation", text="") def draw(self, context): @@ -857,6 +857,10 @@ class GreasePencilLayerRelationsPanel: col = layout.row(align=True) col.prop_search(gpl, "viewlayer_render", scene, "view_layers", text="View Layer") + col = layout.row(align=True) + # Only enable this property when a view layer is selected. + col.enabled = bool(gpl.viewlayer_render) + col.prop(gpl, "use_viewlayer_masks") class GreasePencilLayerDisplayPanel: diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py index f3462dfb35d..4bfd2fd32b0 100644 --- a/release/scripts/startup/bl_ui/properties_paint_common.py +++ b/release/scripts/startup/bl_ui/properties_paint_common.py @@ -1235,7 +1235,7 @@ def brush_basic_gpencil_paint_settings(layout, context, brush, *, compact=False) row.prop(brush, "size", text="Radius") row.prop(gp_settings, "use_pressure", text="", icon='STYLUS_PRESSURE') - if gp_settings.use_pressure and context.area.type == 'PROPERTIES': + if gp_settings.use_pressure and not compact: col = layout.column() col.template_curve_mapping(gp_settings, "curve_sensitivity", brush=True, use_negative_slope=True) @@ -1244,7 +1244,7 @@ def brush_basic_gpencil_paint_settings(layout, context, brush, *, compact=False) row.prop(gp_settings, "pen_strength", slider=True) row.prop(gp_settings, "use_strength_pressure", text="", icon='STYLUS_PRESSURE') - if gp_settings.use_strength_pressure and context.area.type == 'PROPERTIES': + if gp_settings.use_strength_pressure and not compact: col = layout.column() col.template_curve_mapping(gp_settings, "curve_strength", brush=True, use_negative_slope=True) diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py index 89ce742b81e..1208ca0a64a 100644 --- a/release/scripts/startup/bl_ui/space_node.py +++ b/release/scripts/startup/bl_ui/space_node.py @@ -660,8 +660,12 @@ class NODE_PT_quality(bpy.types.Panel): snode = context.space_data tree = snode.node_tree + prefs = bpy.context.preferences col = layout.column() + if prefs.experimental.use_full_frame_compositor: + col.prop(tree, "execution_mode") + col.prop(tree, "render_quality", text="Render") col.prop(tree, "edit_quality", text="Edit") col.prop(tree, "chunk_size") diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py index b24b6e84939..07d9b0ee1f8 100644 --- a/release/scripts/startup/bl_ui/space_sequencer.py +++ b/release/scripts/startup/bl_ui/space_sequencer.py @@ -1381,7 +1381,6 @@ class SEQUENCER_PT_source(SequencerButtonsPanel, Panel): col = layout.column() col.prop(strip, "filepath", text="") col.prop(strip.colorspace_settings, "name", text="Color Space") - col.prop(strip, "mpeg_preseek") col.prop(strip, "stream_index") col.prop(strip, "use_deinterlace") @@ -1398,8 +1397,8 @@ class SEQUENCER_PT_source(SequencerButtonsPanel, Panel): box.template_image_stereo_3d(strip.stereo_3d_format) # Resolution. - col = layout.column(align=True) - col = col.box() + col = layout.box() + col = col.column(align=True) split = col.split(factor=0.5, align=False) split.alignment = 'RIGHT' split.label(text="Resolution") @@ -1409,6 +1408,14 @@ class SEQUENCER_PT_source(SequencerButtonsPanel, Panel): split.label(text="%dx%d" % size, translate=False) else: split.label(text="None") + #FPS + if elem.orig_fps: + split = col.split(factor=0.5, align=False) + split.alignment = 'RIGHT' + split.label(text="FPS") + split.alignment = 'LEFT' + split.label(text="%.2f" % elem.orig_fps, translate=False) + class SEQUENCER_PT_scene(SequencerButtonsPanel, Panel): @@ -1938,7 +1945,7 @@ class SEQUENCER_PT_strip_proxy(SequencerButtonsPanel, Panel): layout.prop(proxy, "use_overwrite") col = layout.column() - col.prop(proxy, "quality", text="Build JPEG Quality") + col.prop(proxy, "quality", text="Quality") if strip.type == 'MOVIE': col = layout.column() diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py index 1e52142c85c..ce1c401b14b 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -164,7 +164,7 @@ class _defs_annotate: gpl = context.active_annotation_layer if gpl is not None: layout.label(text="Annotation:") - if context.space_data.type == 'VIEW_3D': + if context.space_data.type in {'VIEW_3D', 'SEQUENCE_EDITOR'}: if region_type == 'TOOL_HEADER': sub = layout.split(align=True, factor=0.5) sub.ui_units_x = 6.5 @@ -206,14 +206,22 @@ class _defs_annotate: col = layout.row().column(align=True) col.prop(props, "arrowstyle_start", text="Style Start") col.prop(props, "arrowstyle_end", text="End") - elif tool.idname == "builtin.annotate" and region_type != 'TOOL_HEADER': - layout.separator() + elif tool.idname == "builtin.annotate": props = tool.operator_properties("gpencil.annotate") - layout.prop(props, "use_stabilizer", text="Stabilize Stroke") - col = layout.column(align=False) - col.active = props.use_stabilizer - col.prop(props, "stabilizer_radius", text="Radius", slider=True) - col.prop(props, "stabilizer_factor", text="Factor", slider=True) + if region_type == 'TOOL_HEADER': + row = layout.row() + row.prop(props, "use_stabilizer", text="Stabilize Stroke") + subrow = layout.row(align=False) + subrow.active = props.use_stabilizer + subrow.prop(props, "stabilizer_radius", text="Radius", slider=True) + subrow.prop(props, "stabilizer_factor", text="Factor", slider=True) + else: + layout.separator() + layout.prop(props, "use_stabilizer", text="Stabilize Stroke") + col = layout.column(align=False) + col.active = props.use_stabilizer + col.prop(props, "stabilizer_radius", text="Radius", slider=True) + col.prop(props, "stabilizer_factor", text="Factor", slider=True) @ToolDef.from_fn.with_args(draw_settings=draw_settings_common) def scribble(*, draw_settings): diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index de78b88c0f6..d85fe16d654 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -2256,6 +2256,7 @@ class USERPREF_PT_experimental_prototypes(ExperimentalPanel, Panel): context, ( ({"property": "use_new_hair_type"}, "T68981"), ({"property": "use_new_point_cloud_type"}, "T75717"), + ({"property": "use_full_frame_compositor"}, "T88150"), ), ) diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 18c6564b7d4..df520b38eb0 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -2314,6 +2314,7 @@ class VIEW3D_MT_object_animation(Menu): layout.operator("nla.bake", text="Bake Action...") layout.operator("gpencil.bake_mesh_animation", text="Bake Mesh to Grease Pencil...") + layout.operator("gpencil.bake_grease_pencil_animation", text="Bake Object Transform to Grease Pencil...") class VIEW3D_MT_object_rigid_body(Menu): @@ -5035,6 +5036,10 @@ class VIEW3D_MT_edit_gpencil_stroke(Menu): layout.prop(settings, "use_scale_thickness", text="Scale Thickness") layout.separator() + layout.operator("gpencil.stroke_normalize", text="Normalize Thickness").mode = 'THICKNESS' + layout.operator("gpencil.stroke_normalize", text="Normalize Opacity").mode = 'OPACITY' + + layout.separator() layout.operator("gpencil.reset_transform_fill", text="Reset Fill Transform") @@ -6181,6 +6186,9 @@ class VIEW3D_PT_overlay_geometry(Panel): sub.active = overlay.show_fade_inactive sub.prop(overlay, "fade_inactive_alpha", text="Fade Inactive Geometry") + row = col.row(align=True) + row.prop(overlay, "show_mode_transfer", text="Flash on Mode Transfer") + col = layout.column(align=True) col.active = display_all diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index 08d581bfa24..604509b99f9 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -1456,7 +1456,12 @@ class VIEW3D_PT_tools_grease_pencil_brush_advanced(View3DPanel, Panel): elif brush.gpencil_tool == 'FILL': row = col.row(align=True) row.prop(gp_settings, "fill_draw_mode", text="Boundary") - row.prop(gp_settings, "show_fill_boundary", text="", icon='GRID') + row.prop( + gp_settings, + "show_fill_boundary", + icon='HIDE_OFF' if gp_settings.show_fill_boundary else 'HIDE_ON', + text="", + ) col.separator() row = col.row(align=True) @@ -1465,7 +1470,12 @@ class VIEW3D_PT_tools_grease_pencil_brush_advanced(View3DPanel, Panel): col.separator() row = col.row(align=True) row.prop(gp_settings, "extend_stroke_factor") - row.prop(gp_settings, "show_fill_extend", text="", icon='GRID') + row.prop( + gp_settings, + "show_fill_extend", + icon='HIDE_OFF' if gp_settings.show_fill_extend else 'HIDE_ON', + text="", + ) col.separator() col.prop(gp_settings, "fill_leak", text="Leak Size") diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py index bae2c14e3d9..5e245d81de4 100644 --- a/release/scripts/startup/nodeitems_builtins.py +++ b/release/scripts/startup/nodeitems_builtins.py @@ -472,14 +472,6 @@ texture_node_categories = [ ]), ] - -def not_implemented_node(idname): - NodeType = getattr(bpy.types, idname) - name = NodeType.bl_rna.name - label = "%s (mockup)" % name - return NodeItem(idname, label=label) - - geometry_node_categories = [ # Geometry Nodes GeometryNodeCategory("GEO_ATTRIBUTE", "Attribute", items=[ @@ -503,6 +495,7 @@ geometry_node_categories = [ NodeItem("GeometryNodeAttributeTransfer"), ]), GeometryNodeCategory("GEO_COLOR", "Color", items=[ + NodeItem("ShaderNodeRGBCurve"), NodeItem("ShaderNodeValToRGB"), NodeItem("ShaderNodeSeparateRGB"), NodeItem("ShaderNodeCombineRGB"), @@ -510,9 +503,12 @@ geometry_node_categories = [ GeometryNodeCategory("GEO_CURVE", "Curve", items=[ NodeItem("GeometryNodeCurveToMesh"), NodeItem("GeometryNodeCurveResample"), + NodeItem("GeometryNodeMeshToCurve"), + NodeItem("GeometryNodeCurveLength"), ]), GeometryNodeCategory("GEO_GEOMETRY", "Geometry", items=[ NodeItem("GeometryNodeBoundBox"), + NodeItem("GeometryNodeDeleteGeometry"), NodeItem("GeometryNodeTransform"), NodeItem("GeometryNodeJoinGeometry"), ]), @@ -565,6 +561,7 @@ geometry_node_categories = [ NodeItem("GeometryNodeSwitch"), ]), GeometryNodeCategory("GEO_VECTOR", "Vector", items=[ + NodeItem("ShaderNodeVectorCurve"), NodeItem("ShaderNodeSeparateXYZ"), NodeItem("ShaderNodeCombineXYZ"), NodeItem("ShaderNodeVectorMath"), diff --git a/release/steam/README.md b/release/steam/README.md deleted file mode 100644 index 05eda799c3f..00000000000 --- a/release/steam/README.md +++ /dev/null @@ -1,70 +0,0 @@ -Creating Steam builds for Blender -================================= - -This script automates creation of the Steam files: download of the archives, -extraction of the archives, preparation of the build scripts (VDF files), actual -building of the Steam game files. - -Requirements -============ - -* MacOS machine - Tested on Catalina 10.15.6. Extracting contents from the DMG - archive did not work Windows nor on Linux using 7-zip. All DMG archives tested - failed to be extracted. As such only MacOS is known to work. -* Steam SDK downloaded from SteamWorks - The `steamcmd` is used to generate the - Steam game files. The path to the `steamcmd` is what is actually needed. -* SteamWorks credentials - Needed to log in using `steamcmd`. -* Login to SteamWorks with the `steamcmd` from the command-line at least once - - Needded to ensure the user is properly logged in. On a new machine the user - will have to go through two-factor authentication. -* App ID and Depot IDs - Needed to create the VDF files. -* Python 3.x - 3.7 was tested. -* Base URL - for downloading the archives. - -Usage -===== - -```bash -$ export STEAMUSER=SteamUserName -$ export STEAMPW=SteamUserPW -$ export BASEURL=https://download.blender.org/release/Blender2.83/ -$ export VERSION=2.83.3 -$ export APPID=appidnr -$ export WINID=winidnr -$ export LINID=linuxidnr -$ export MACOSID=macosidnr - -# log in to SteamWorks from command-line at least once - -$ ../sdk/tools/ContentBuilder/builder_osx/steamcmd +login $STEAMUSER $STEAMPW - -# once that has been done we can now actually start our tool - -$ python3.7 create_steam_builds.py --baseurl $BASEURL --version $VERSION --appid $APPID --winid $WINID --linuxid $LINID --macosid $MACOSID --steamuser $STEAMUSER --steampw $STEAMPW --steamcmd ../sdk/tools/ContentBuilder/builder_osx/steamcmd -``` - -All arguments in the above example are required. - -At the start the tool will login using `steamcmd`. This is necessary to let the -Steam SDK update itself if necessary. - -There are a few optional arguments: - -* `--dryrun`: If set building the game files will not actually happen. A set of - log files and a preview manifest per depot will be created in the output folder. - This can be used to double-check everything works as expected. -* `--skipdl`: If set will skip downloading of the archives. The tool expects the - archives to already exist in the correct content location. -* `--skipextract`: If set will skip extraction of all archives. The tool expects - the archives to already have been correctly extracted in the content location. - -Run the tool with `-h` for detailed information on each argument. - -The content and output folders are generated through appending the version -without dots to the words `content` and `output` respectively, e.g. `content2833` -and `output2833`. These folders are created next to the tool. - -From all `.template` files the Steam build scripts will be generated also in the -same directory as the tool. The files will have the extension `.vdf`. - -In case of errors the tool will have a non-zero return code.
\ No newline at end of file diff --git a/release/steam/blender_app_build.vdf.template b/release/steam/blender_app_build.vdf.template deleted file mode 100644 index 9e2d0625d72..00000000000 --- a/release/steam/blender_app_build.vdf.template +++ /dev/null @@ -1,17 +0,0 @@ -"appbuild" -{ - "appid" "[APPID]" - "desc" "Blender [VERSION]" // description for this build - "buildoutput" "./[OUTPUT]" // build output folder for .log, .csm & .csd files, relative to location of this file - "contentroot" "./[CONTENT]" // root content folder, relative to location of this file - "setlive" "" // branch to set live after successful build, non if empty - "preview" "[DRYRUN]" // 1 to enable preview builds, 0 to commit build to steampipe - "local" "" // set to flie path of local content server - - "depots" - { - "[WINID]" "depot_build_win.vdf" - "[LINUXID]" "depot_build_linux.vdf" - "[MACOSID]" "depot_build_macos.vdf" - } -} diff --git a/release/steam/create_steam_builds.py b/release/steam/create_steam_builds.py deleted file mode 100644 index 2ecd0c347f7..00000000000 --- a/release/steam/create_steam_builds.py +++ /dev/null @@ -1,397 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import pathlib -import requests -import shutil -import subprocess -from typing import Callable, Iterator, List, Tuple - -# supported archive and platform endings, used to create actual archive names -archive_endings = ["windows64.zip", "linux64.tar.xz", "macOS.dmg"] - - -def add_optional_argument(option: str, help: str) -> None: - global parser - """Add an optional argument - - Args: - option (str): Option to add - help (str): Help description for the argument - """ - parser.add_argument(option, help=help, action='store_const', const=1) - - -def blender_archives(version: str) -> Iterator[str]: - """Generator for Blender archives for version. - - Yields for items in archive_endings an archive name in the form of - blender-{version}-{ending}. - - Args: - version (str): Version string of the form 2.83.2 - - - Yields: - Iterator[str]: Name in the form of blender-{version}-{ending} - """ - global archive_endings - - for ending in archive_endings: - yield f"blender-{version}-{ending}" - - -def get_archive_type(archive_type: str, version: str) -> str: - """Return the archive of given type and version. - - Args: - archive_type (str): extension for archive type to check for - version (str): Version string in the form 2.83.2 - - Raises: - Exception: Execption when archive type isn't found - - Returns: - str: archive name for given type - """ - - for archive in blender_archives(version): - if archive.endswith(archive_type): - return archive - raise Exception("Unknown archive type") - - -def execute_command(cmd: List[str], name: str, errcode: int, cwd=".", capture_output=True) -> str: - """Execute the given command. - - Returns the process stdout upon success if any. - - On error print message the command with name that has failed. Print stdout - and stderr of the process if any, and then exit with given error code. - - Args: - cmd (List[str]): Command in list format, each argument as their own item - name (str): Name of command to use when printing to command-line - errcode (int): Error code to use in case of exit() - cwd (str, optional): Folder to use as current work directory for command - execution. Defaults to ".". - capture_output (bool, optional): Whether to capture command output or not. - Defaults to True. - - Returns: - str: stdout if any, or empty string - """ - cmd_process = subprocess.run( - cmd, capture_output=capture_output, encoding="UTF-8", cwd=cwd) - if cmd_process.returncode == 0: - if cmd_process.stdout: - return cmd_process.stdout - else: - return "" - else: - print(f"ERROR: {name} failed.") - if cmd_process.stdout: - print(cmd_process.stdout) - if cmd_process.stderr: - print(cmd_process.stderr) - exit(errcode) - return "" - - -def download_archives(base_url: str, archives: Callable[[str], Iterator[str]], version: str, dst_dir: pathlib.Path): - """Download archives from the given base_url. - - Archives is a generator for Blender archive names based on version. - - Archive names are appended to the base_url to load from, and appended to - dst_dir to save to. - - Args: - base_url (str): Base URL to load archives from - archives (Callable[[str], Iterator[str]]): Generator for Blender archive - names based on version - version (str): Version string in the form of 2.83.2 - dst_dir (pathlib.Path): Download destination - """ - - if base_url[-1] != '/': - base_url = base_url + '/' - - for archive in archives(version): - download_url = f"{base_url}{archive}" - target_file = dst_dir.joinpath(archive) - download_file(download_url, target_file) - - -def download_file(from_url: str, to_file: pathlib.Path) -> None: - """Download from_url as to_file. - - Actual downloading will be skipped if --skipdl is given on the command-line. - - Args: - from_url (str): Full URL to resource to download - to_file (pathlib.Path): Full path to save downloaded resource as - """ - global args - - if not args.skipdl or not to_file.exists(): - print(f"Downloading {from_url}") - with open(to_file, "wb") as download_zip: - response = requests.get(from_url) - if response.status_code != requests.codes.ok: - print(f"ERROR: failed to download {from_url} (status code: {response.status_code})") - exit(1313) - download_zip.write(response.content) - else: - print(f"Downloading {from_url} skipped") - print(" ... OK") - - -def copy_contents_from_dmg_to_path(dmg_file: pathlib.Path, dst: pathlib.Path) -> None: - """Copy the contents of the given DMG file to the destination folder. - - Args: - dmg_file (pathlib.Path): Full path to DMG archive to extract from - dst (pathlib.Path): Full path to destination to extract to - """ - hdiutil_attach = ["hdiutil", - "attach", - "-readonly", - f"{dmg_file}" - ] - attached = execute_command(hdiutil_attach, "hdiutil attach", 1) - - # Last line of output is what we want, it is of the form - # /dev/somedisk Apple_HFS /Volumes/Blender - # We want to retain the mount point, and the folder the mount is - # created on. The mounted disk we need for detaching, the folder we - # need to be able to copy the contents to where we can use them - attachment_items = attached.splitlines()[-1].split() - mounted_disk = attachment_items[0] - source_location = pathlib.Path(attachment_items[2], "Blender.app") - - print(f"{source_location} -> {dst}") - - shutil.copytree(source_location, dst) - - hdiutil_detach = ["hdiutil", - "detach", - f"{mounted_disk}" - ] - execute_command(hdiutil_detach, "hdiutil detach", 2) - - -def create_build_script(template_name: str, vars: List[Tuple[str, str]]) -> pathlib.Path: - """ - Create the Steam build script - - Use the given template and template variable tuple list. - - Returns pathlib.Path to the created script. - - Args: - template_name (str): [description] - vars (List[Tuple[str, str]]): [description] - - Returns: - pathlib.Path: Full path to the generated script - """ - build_script = pathlib.Path(".", template_name).read_text() - for var in vars: - build_script = build_script.replace(var[0], var[1]) - build_script_file = template_name.replace(".template", "") - build_script_path = pathlib.Path(".", build_script_file) - build_script_path.write_text(build_script) - return build_script_path - - -def clean_up() -> None: - """Remove intermediate files depending on given command-line arguments - """ - global content_location, args - - if not args.leavearch and not args.leaveextracted: - shutil.rmtree(content_location) - - if args.leavearch and not args.leaveextracted: - shutil.rmtree(content_location.joinpath(zip_extract_folder)) - shutil.rmtree(content_location.joinpath(tarxz_extract_folder)) - shutil.rmtree(content_location.joinpath(dmg_extract_folder)) - - if args.leaveextracted and not args.leavearch: - import os - os.remove(content_location.joinpath(zipped_blender)) - os.remove(content_location.joinpath(tarxz_blender)) - os.remove(content_location.joinpath(dmg_blender)) - - -def extract_archive(archive: str, extract_folder_name: str, - cmd: List[str], errcode: int) -> None: - """Extract all files from archive to given folder name. - - Will not extract if - target folder already exists, or if --skipextract was given on the - command-line. - - Args: - archive (str): Archive name to extract - extract_folder_name (str): Folder name to extract to - cmd (List[str]): Command with arguments to use - errcode (int): Error code to use for exit() - """ - global args, content_location - - extract_location = content_location.joinpath(extract_folder_name) - - pre_extract = set(content_location.glob("*")) - - if not args.skipextract or not extract_location.exists(): - print(f"Extracting files from {archive}...") - cmd.append(content_location.joinpath(archive)) - execute_command(cmd, cmd[0], errcode, cwd=content_location) - # in case we use a non-release archive the naming will be incorrect. - # simply rename to expected target name - post_extract = set(content_location.glob("*")) - diff_extract = post_extract - pre_extract - if not extract_location in diff_extract: - folder_to_rename = list(diff_extract)[0] - folder_to_rename.rename(extract_location) - print(" OK") - else: - print(f"Skipping extraction {archive}!") - -# ============================================================================== - - -parser = argparse.ArgumentParser() - -parser.add_argument("--baseurl", required=True, - help="The base URL for files to download, " - "i.e. https://download.blender.org/release/Blender2.83/") - -parser.add_argument("--version", required=True, - help="The Blender version to release, in the form 2.83.3") - -parser.add_argument("--appid", required=True, - help="The Blender App ID on Steam") -parser.add_argument("--winid", required=True, - help="The Windows depot ID") -parser.add_argument("--linuxid", required=True, - help="The Linux depot ID") -parser.add_argument("--macosid", required=True, - help="The MacOS depot ID") - -parser.add_argument("--steamcmd", required=True, - help="Path to the steamcmd") -parser.add_argument("--steamuser", required=True, - help="The login for the Steam builder user") -parser.add_argument("--steampw", required=True, - help="Login password for the Steam builder user") - -add_optional_argument("--dryrun", - "If set the Steam files will not be uploaded") -add_optional_argument("--leavearch", - help="If set don't clean up the downloaded archives") -add_optional_argument("--leaveextracted", - help="If set don't clean up the extraction folders") -add_optional_argument("--skipdl", - help="If set downloading the archives is skipped if it already exists locally.") -add_optional_argument("--skipextract", - help="If set skips extracting of archives. The tool assumes the archives" - "have already been extracted to their correct locations") - -args = parser.parse_args() - -VERSIONNODOTS = args.version.replace('.', '') -OUTPUT = f"output{VERSIONNODOTS}" -CONTENT = f"content{VERSIONNODOTS}" - -# ===== set up main locations - -content_location = pathlib.Path(".", CONTENT).absolute() -output_location = pathlib.Path(".", OUTPUT).absolute() - -content_location.mkdir(parents=True, exist_ok=True) -output_location.mkdir(parents=True, exist_ok=True) - -# ===== login - -# Logging into Steam once to ensure the SDK updates itself properly. If we don't -# do that the combined +login and +run_app_build_http at the end of the tool -# will fail. -steam_login = [args.steamcmd, - "+login", - args.steamuser, - args.steampw, - "+quit" - ] -print("Logging in to Steam...") -execute_command(steam_login, "Login to Steam", 10) -print(" OK") - -# ===== prepare Steam build scripts - -template_vars = [ - ("[APPID]", args.appid), - ("[OUTPUT]", OUTPUT), - ("[CONTENT]", CONTENT), - ("[VERSION]", args.version), - ("[WINID]", args.winid), - ("[LINUXID]", args.linuxid), - ("[MACOSID]", args.macosid), - ("[DRYRUN]", f"{args.dryrun}" if args.dryrun else "0") -] - -blender_app_build = create_build_script( - "blender_app_build.vdf.template", template_vars) -create_build_script("depot_build_win.vdf.template", template_vars) -create_build_script("depot_build_linux.vdf.template", template_vars) -create_build_script("depot_build_macos.vdf.template", template_vars) - -# ===== download archives - -download_archives(args.baseurl, blender_archives, - args.version, content_location) - -# ===== set up file and folder names - -zipped_blender = get_archive_type("zip", args.version) -zip_extract_folder = zipped_blender.replace(".zip", "") -tarxz_blender = get_archive_type("tar.xz", args.version) -tarxz_extract_folder = tarxz_blender.replace(".tar.xz", "") -dmg_blender = get_archive_type("dmg", args.version) -dmg_extract_folder = dmg_blender.replace(".dmg", "") - -# ===== extract - -unzip_cmd = ["unzip", "-q"] -extract_archive(zipped_blender, zip_extract_folder, unzip_cmd, 3) - -untarxz_cmd = ["tar", "-xf"] -extract_archive(tarxz_blender, tarxz_extract_folder, untarxz_cmd, 4) - -if not args.skipextract or not content_location.joinpath(dmg_extract_folder).exists(): - print("Extracting files from Blender MacOS archive...") - blender_dmg = content_location.joinpath(dmg_blender) - target_location = content_location.joinpath( - dmg_extract_folder, "Blender.app") - copy_contents_from_dmg_to_path(blender_dmg, target_location) - print(" OK") -else: - print("Skipping extraction of .dmg!") - -# ===== building - -print("Build Steam game files...") -steam_build = [args.steamcmd, - "+login", - args.steamuser, - args.steampw, - "+run_app_build_http", - blender_app_build.absolute(), - "+quit" - ] -execute_command(steam_build, "Build with steamcmd", 13) -print(" OK") - -clean_up() diff --git a/release/steam/depot_build_linux.vdf.template b/release/steam/depot_build_linux.vdf.template deleted file mode 100644 index 0f69008548e..00000000000 --- a/release/steam/depot_build_linux.vdf.template +++ /dev/null @@ -1,31 +0,0 @@ -"DepotBuildConfig" -{ - // Set your assigned depot ID here - "DepotID" "[LINUXID]" - - // Set a root for all content. - // All relative paths specified below (LocalPath in FileMapping entries, and FileExclusion paths) - // will be resolved relative to this root. - // If you don't define ContentRoot, then it will be assumed to be - // the location of this script file, which probably isn't what you want - "ContentRoot" "./blender-[VERSION]-linux64/" - - // include all files recursivley - "FileMapping" - { - // This can be a full path, or a path relative to ContentRoot - "LocalPath" "*" - - // This is a path relative to the install folder of your game - "DepotPath" "." - - // If LocalPath contains wildcards, setting this means that all - // matching files within subdirectories of LocalPath will also - // be included. - "recursive" "1" - } - - // but exclude all symbol files - // This can be a full path, or a path relative to ContentRoot - "FileExclusion" "*.pdb" -} diff --git a/release/steam/depot_build_macos.vdf.template b/release/steam/depot_build_macos.vdf.template deleted file mode 100644 index 33dde860462..00000000000 --- a/release/steam/depot_build_macos.vdf.template +++ /dev/null @@ -1,30 +0,0 @@ -"DepotBuildConfig" -{ - // Set your assigned depot ID here - "DepotID" "[MACOSID]" - - // Set a root for all content. - // All relative paths specified below (LocalPath in FileMapping entries, and FileExclusion paths) - // will be resolved relative to this root. - // If you don't define ContentRoot, then it will be assumed to be - // the location of this script file, which probably isn't what you want - "ContentRoot" "./blender-[VERSION]-macOS/" - // include all files recursivley - "FileMapping" - { - // This can be a full path, or a path relative to ContentRoot - "LocalPath" "*" - - // This is a path relative to the install folder of your game - "DepotPath" "." - - // If LocalPath contains wildcards, setting this means that all - // matching files within subdirectories of LocalPath will also - // be included. - "recursive" "1" - } - - // but exclude all symbol files - // This can be a full path, or a path relative to ContentRoot - "FileExclusion" "*.pdb" -} diff --git a/release/steam/depot_build_win.vdf.template b/release/steam/depot_build_win.vdf.template deleted file mode 100644 index 2c18a0f15dd..00000000000 --- a/release/steam/depot_build_win.vdf.template +++ /dev/null @@ -1,31 +0,0 @@ -"DepotBuildConfig" -{ - // Set your assigned depot ID here - "DepotID" "[WINID]" - - // Set a root for all content. - // All relative paths specified below (LocalPath in FileMapping entries, and FileExclusion paths) - // will be resolved relative to this root. - // If you don't define ContentRoot, then it will be assumed to be - // the location of this script file, which probably isn't what you want - "ContentRoot" "./blender-[VERSION]-windows64/" - - // include all files recursivley - "FileMapping" - { - // This can be a full path, or a path relative to ContentRoot - "LocalPath" "*" - - // This is a path relative to the install folder of your game - "DepotPath" "." - - // If LocalPath contains wildcards, setting this means that all - // matching files within subdirectories of LocalPath will also - // be included. - "recursive" "1" - } - - // but exclude all symbol files - // This can be a full path, or a path relative to ContentRoot - "FileExclusion" "*.pdb" -} diff --git a/release/windows/manifest/blender.exe.manifest.in b/release/windows/manifest/blender.exe.manifest.in index e73ddf3267b..b516efe24cb 100644 --- a/release/windows/manifest/blender.exe.manifest.in +++ b/release/windows/manifest/blender.exe.manifest.in @@ -13,12 +13,6 @@ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> <!-- Windows 8.1 --> <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> - <!-- Windows 8 --> - <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> - <!-- Windows 7 --> - <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> - <!-- Windows Vista --> - <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> </application> </compatibility> <dependency> diff --git a/release/windows/msix/README.md b/release/windows/msix/README.md index 3f661a44066..96f753f0e78 100644 --- a/release/windows/msix/README.md +++ b/release/windows/msix/README.md @@ -1,82 +1,4 @@ -create_msix_package -=================== +Buildbot Configuration +====================== -This tool is used to create MSIX packages from a given ZiP archive. The MSIX -package is distributed mainly through the Microsoft Store. It can also be -installed when downloaded from blender.org. For that to work the MSIX package -needs to be signed. - -Requirements -============ - -* MakeAppX.exe - this tool is distributed with the Windows 10 SDK and is used to build the .appx package. -* MakePri.exe - this tool is distributed with the Windows 10 SDK and is used to generate a resources file. -* SignTool.exe - this tool is distributed with the Windows 10 SDK and is used to sign the .appx package. -* Python 3 (3.7 or later tested) - to run the create_msix_package.py script -* requests module - can be installed with `pip install requests` -* PFX file (optional, but strongly recommended) - for signing the resulting MSIX - package. **NOTE:** If the MSIX package is not signed when uploaded to the Microsoft - store the validation and certification process can take up to three full - business day. - -Usage -===== - -On the command-line: -```batch -set VERSION=2.83.4.0 -set URL=https://download.blender.org/release/Blender2.83/blender-2.83.4-windows64.zip -set PUBID=CN=PUBIDHERE -set PFX=X:\path\to\cert.pfx -set PFXPW=pwhere - -python create_msix_package.py --version %VERSION% --url %URL% --publisher %PUBID% --pfx %PFX% --password %PFXPW% -``` - -Result will be a MSIX package with the name `blender-2.83.4-windows64.msix`. -With the above usage it will be signed. If the signing options are left out the -package will not be signed. - -Optional arguments -================== - -In support of testing and developing the manifest and scripts there are a few -optional arguments: - -* `--skipdl` : If a `blender.zip` is available already next to the tool use this - to skip actual downloading of the archive designated by `--url`. The latter - option is still required -* `--overwrite` : When script fails the final clean-up may be incomplete leaving - the `Content` folder with its structure. Specify this argument to automatically - clean up this folder before starting to seed the `Content` folder -* `--leavezip` : When specified leave the `blender.zip` file while cleaning up - all other intermediate files, including the `Content` folder. This is useful - to not have to re-download the same archive from `--url` on each usage - - -What it does -============ - -The tool creates in the directory it lives a subfolder called `Content`. This is -where all necessary files are placed. - -The `Assets` folder is copied to the `Content` folder. - -From the application manifest template a version with necessary parts replaced as -their actual values as specified on the command-line is realized. This manifest controls the packaging of Blender into the MSIX format. - -Next the tool downloads the designated ZIP archive locally as blender.zip. From -this archive the files are extracted into the `Content\Blender` folder, but skip -the leading part of paths in the ZIP. We want to write the files to the -content_blender_folder where blender.exe ends up as -`Content\Blender\blender.exe`, and not -`Content\Blender\blender-2.83.4-windows64\blender.exe` - -Once the extraction is completed the MakeAppX tool is executed with the `Content` -folder as input. The result will be the MSIX package with the name in the form -`blender-X.YY.Z-windows64.msix`. - -If the PFX file and its password are given on the command-line this MSIX package -will be signed. - -All intermediate files and directories will be removed. +Files used by Buildbot's `package-code-store-windows` step. diff --git a/release/windows/msix/create_msix_package.py b/release/windows/msix/create_msix_package.py deleted file mode 100644 index 3e41484eef5..00000000000 --- a/release/windows/msix/create_msix_package.py +++ /dev/null @@ -1,197 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import os -import pathlib -import requests -import shutil -import subprocess -import zipfile - -parser = argparse.ArgumentParser() -parser.add_argument( - "--version", - required=True, - help="Version string in the form of 2.83.3.0", -) -parser.add_argument( - "--url", - required=True, - help="Location of the release ZIP archive to download", -) -parser.add_argument( - "--publisher", - required=True, - help="A string in the form of 'CN=PUBLISHER'", -) -parser.add_argument( - "--pfx", - required=False, - help="Absolute path to the PFX file used for signing the resulting MSIX package", -) -parser.add_argument( - "--password", - required=False, - default="blender", - help="Password for the PFX file", -) -parser.add_argument( - "--lts", - required=False, - help="If set this MSIX is for an LTS release", - action='store_const', - const=1, -) -parser.add_argument( - "--skipdl", - required=False, - help="If set skip downloading of the specified URL as blender.zip. The tool assumes blender.zip exists", - action='store_const', - const=1, -) -parser.add_argument( - "--leavezip", - required=False, - help="If set don't clean up the downloaded blender.zip", - action='store_const', - const=1, -) -parser.add_argument( - "--overwrite", - required=False, - help="If set remove Content folder if it already exists", - action='store_const', - const=1, -) -args = parser.parse_args() - - -def execute_command(cmd: list, name: str, errcode: int): - """ - Execute given command in cmd. Output is captured. If an error - occurs name is used to print ERROR message, along with stderr and - stdout of the process if either was captured. - """ - cmd_process = subprocess.run(cmd, capture_output=True, encoding="UTF-8") - if cmd_process.returncode != 0: - print(f"ERROR: {name} failed.") - if cmd_process.stdout: - print(cmd_process.stdout) - if cmd_process.stderr: - print(cmd_process.stderr) - exit(errcode) - - -LTSORNOT = "" -PACKAGETYPE = "" -if args.lts: - versionparts = args.version.split(".") - LTSORNOT = f" {versionparts[0]}.{versionparts[1]} LTS" - PACKAGETYPE = f"{versionparts[0]}.{versionparts[1]}LTS" - -blender_package_msix = pathlib.Path(".", f"blender-{args.version}-windows64.msix").absolute() -content_folder = pathlib.Path(".", "Content") -content_blender_folder = pathlib.Path(content_folder, "Blender").absolute() -content_assets_folder = pathlib.Path(content_folder, "Assets") -assets_original_folder = pathlib.Path(".", "Assets") - -pri_config_file = pathlib.Path(".", "priconfig.xml") -pri_resources_file = pathlib.Path(content_folder, "resources.pri") - -local_blender_zip = pathlib.Path(".", "blender.zip") - -if args.pfx: - pfx_path = pathlib.Path(args.pfx) - if not pfx_path.exists(): - print("ERROR: PFX file not found. Please ensure you give the correct path to the PFX file on the command-line.") - exit(1) - print(f"Creating MSIX package with signing using PFX file at {pfx_path}") -else: - pfx_path = None - print("Creating MSIX package without signing.") - -pri_command = ["makepri", - "new", - "/pr", f"{content_folder.absolute()}", - "/cf", f"{pri_config_file.absolute()}", - "/of", f"{pri_resources_file.absolute()}" - ] - -msix_command = ["makeappx", - "pack", - "/h", "SHA256", - "/d", f"{content_folder.absolute()}", - "/p", f"{blender_package_msix}" - ] -if pfx_path: - sign_command = ["signtool", - "sign", - "/fd", "sha256", - "/a", "/f", f"{pfx_path.absolute()}", - "/p", f"{args.password}", - f"{blender_package_msix}" - ] - -if args.overwrite: - if content_folder.joinpath("Assets").exists(): - shutil.rmtree(content_folder) -content_folder.mkdir(exist_ok=True) -shutil.copytree(assets_original_folder, content_assets_folder) - -manifest_text = pathlib.Path("AppxManifest.xml.template").read_text() -manifest_text = manifest_text.replace("[VERSION]", args.version) -manifest_text = manifest_text.replace("[PUBLISHER]", args.publisher) -manifest_text = manifest_text.replace("[LTSORNOT]", LTSORNOT) -manifest_text = manifest_text.replace("[PACKAGETYPE]", PACKAGETYPE) -pathlib.Path(content_folder, "AppxManifest.xml").write_text(manifest_text) - -if not args.skipdl: - print(f"Downloading blender archive {args.url} to {local_blender_zip}...") - - with open(local_blender_zip, "wb") as download_zip: - response = requests.get(args.url) - download_zip.write(response.content) - - print("... download complete.") -else: - print("Skipping download") - -print(f"Extracting files from ZIP to {content_blender_folder}...") - -# Extract the files from the ZIP archive, but skip the leading part of paths -# in the ZIP. We want to write the files to the content_blender_folder where -# blender.exe ends up as ./Content/Blender/blender.exe, and not -# ./Content/Blender/blender-2.83.3-windows64/blender.exe -with zipfile.ZipFile(local_blender_zip, "r") as blender_zip: - for entry in blender_zip.infolist(): - if entry.is_dir(): - continue - entry_location = pathlib.Path(entry.filename) - target_location = content_blender_folder.joinpath(*entry_location.parts[1:]) - pathlib.Path(target_location.parent).mkdir(parents=True, exist_ok=True) - extracted_entry = blender_zip.read(entry) - target_location.write_bytes(extracted_entry) - -print("... extraction complete.") - - -print(f"Generating Package Resource Index (PRI) file using command: {' '.join(pri_command)}") -execute_command(pri_command, "MakePri", 4) - -print(f"Creating MSIX package using command: {' '.join(msix_command)}") - -# Remove MSIX file if it already exists. Otherwise the MakeAppX tool -# will hang. -if blender_package_msix.exists(): - os.remove(blender_package_msix) -execute_command(msix_command, "MakeAppX", 2) - -if args.pfx: - print(f"Signing MSIX package using command: {' '.join(sign_command)}") - execute_command(sign_command, "SignTool", 3) - -if not args.leavezip: - os.remove(local_blender_zip) -shutil.rmtree(content_folder) - -print("Done.") |