Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release')
-rw-r--r--release/darwin/README.md5
-rw-r--r--release/darwin/README.txt55
-rw-r--r--release/darwin/blender.applescript18
-rwxr-xr-xrelease/darwin/bundle.sh212
m---------release/datafiles/locale0
-rw-r--r--release/freedesktop/org.blender.Blender.appdata.xml19
-rw-r--r--release/freedesktop/snap/README.md17
-rw-r--r--release/freedesktop/snap/README.txt38
-rw-r--r--release/freedesktop/snap/blender-snapcraft-template.yaml (renamed from release/freedesktop/snap/snapcraft.yaml.in)16
-rwxr-xr-xrelease/freedesktop/snap/bundle.py21
m---------release/scripts/addons0
m---------release/scripts/addons_contrib0
-rw-r--r--release/scripts/modules/bl_previews_utils/bl_previews_render.py14
-rw-r--r--release/scripts/modules/bpy/path.py1
-rw-r--r--release/scripts/modules/rna_manual_reference.py74
-rw-r--r--release/scripts/presets/camera/1_colon_2.3_inch.py4
-rw-r--r--release/scripts/presets/camera/1_inch.py4
-rw-r--r--release/scripts/presets/camera/1_slash_1.8_inch.py4
-rw-r--r--release/scripts/presets/camera/1_slash_2.3_inch.py4
-rw-r--r--release/scripts/presets/camera/1_slash_2.5_inch.py (renamed from release/scripts/presets/camera/1_colon_2.5_inch.py)2
-rw-r--r--release/scripts/presets/camera/1_slash_2.7_inch.py4
-rw-r--r--release/scripts/presets/camera/1_slash_3.2_inch.py (renamed from release/scripts/presets/camera/iPhone_4.py)3
-rw-r--r--release/scripts/presets/camera/2_colon_3_inch.py4
-rw-r--r--release/scripts/presets/camera/2_slash_3_inch.py4
-rw-r--r--release/scripts/presets/camera/4_colon_3_inch.py4
-rw-r--r--release/scripts/presets/camera/APS-C.py4
-rw-r--r--release/scripts/presets/camera/APS-C_(Canon).py4
-rw-r--r--release/scripts/presets/camera/APS-H_(Canon).py (renamed from release/scripts/presets/camera/Canon_APS-H.py)2
-rw-r--r--release/scripts/presets/camera/Analog_16mm.py4
-rw-r--r--release/scripts/presets/camera/Analog_35mm.py4
-rw-r--r--release/scripts/presets/camera/Analog_65mm.py4
-rw-r--r--release/scripts/presets/camera/Analog_IMAX.py4
-rw-r--r--release/scripts/presets/camera/Analog_Super_16.py4
-rw-r--r--release/scripts/presets/camera/Analog_Super_35.py (renamed from release/scripts/presets/camera/Super_35_Film.py)2
-rw-r--r--release/scripts/presets/camera/Arri_Alexa.py4
-rw-r--r--release/scripts/presets/camera/Arri_Alexa_65.py4
-rw-r--r--release/scripts/presets/camera/Arri_Alexa_LF.py4
-rw-r--r--release/scripts/presets/camera/Arri_Alexa_Mini_&_SXT.py4
-rw-r--r--release/scripts/presets/camera/Blackmagic_Cinema_Camera.py4
-rw-r--r--release/scripts/presets/camera/Blackmagic_Pocket_&_Studio.py (renamed from release/scripts/presets/camera/Blackmagic_Pocket_Cinema_Camera.py)2
-rw-r--r--release/scripts/presets/camera/Blackmagic_Pocket_4K.py4
-rw-r--r--release/scripts/presets/camera/Blackmagic_Pocket_6k.py4
-rw-r--r--release/scripts/presets/camera/Blackmagic_Production_Camera_4K.py4
-rw-r--r--release/scripts/presets/camera/Blackmagic_URSA_4.6K.py4
-rw-r--r--release/scripts/presets/camera/Blender.py4
-rw-r--r--release/scripts/presets/camera/Canon_1100D.py4
-rw-r--r--release/scripts/presets/camera/Canon_APS-C.py4
-rw-r--r--release/scripts/presets/camera/Canon_C300.py4
-rw-r--r--release/scripts/presets/camera/Foveon_(Sigma).py4
-rw-r--r--release/scripts/presets/camera/Fullframe.py (renamed from release/scripts/presets/camera/Full_Frame_35mm_Camera.py)2
-rw-r--r--release/scripts/presets/camera/GoPro_Hero3_Black.py6
-rw-r--r--release/scripts/presets/camera/GoPro_Hero3_Silver.py6
-rw-r--r--release/scripts/presets/camera/MFT.py4
-rw-r--r--release/scripts/presets/camera/Medium-format_(Hasselblad).py4
-rw-r--r--release/scripts/presets/camera/Nexus_5.py5
-rw-r--r--release/scripts/presets/camera/Nikon_D3100.py4
-rw-r--r--release/scripts/presets/camera/Nikon_DX.py4
-rw-r--r--release/scripts/presets/camera/Panasonic_AG-HVX200.py4
-rw-r--r--release/scripts/presets/camera/Panasonic_LX2.py4
-rw-r--r--release/scripts/presets/camera/RED_Dragon_5K.py4
-rw-r--r--release/scripts/presets/camera/RED_Dragon_6K.py4
-rw-r--r--release/scripts/presets/camera/RED_Helium_8K.py4
-rw-r--r--release/scripts/presets/camera/RED_Monstro_8K.py4
-rw-r--r--release/scripts/presets/camera/Red_Epic.py4
-rw-r--r--release/scripts/presets/camera/Red_One_2K.py4
-rw-r--r--release/scripts/presets/camera/Red_One_3K.py4
-rw-r--r--release/scripts/presets/camera/Red_One_4K.py4
-rw-r--r--release/scripts/presets/camera/Samsung_Galaxy_S3.py5
-rw-r--r--release/scripts/presets/camera/Samsung_Galaxy_S4.py5
-rw-r--r--release/scripts/presets/camera/Sony_A55.py4
-rw-r--r--release/scripts/presets/camera/Sony_EX1.py4
-rw-r--r--release/scripts/presets/camera/Sony_F65.py4
-rw-r--r--release/scripts/presets/camera/Super_16_Film.py4
-rw-r--r--release/scripts/presets/camera/iPhone_5.py5
-rw-r--r--release/scripts/presets/keyconfig/Blender.py6
-rw-r--r--release/scripts/presets/keyconfig/keymap_data/blender_default.py39
-rw-r--r--release/scripts/presets/tracking_camera/1__colon__2.3_inch.py9
-rw-r--r--release/scripts/presets/tracking_camera/1__colon__2.5_inch.py9
-rw-r--r--release/scripts/presets/tracking_camera/1_inch.py4
-rw-r--r--release/scripts/presets/tracking_camera/1_slash_1.8_inch.py4
-rw-r--r--release/scripts/presets/tracking_camera/1_slash_2.3_inch.py4
-rw-r--r--release/scripts/presets/tracking_camera/1_slash_2.5_inch.py (renamed from release/scripts/presets/camera/GoPro_Hero3_White.py)4
-rw-r--r--release/scripts/presets/tracking_camera/1_slash_2.7_inch.py4
-rw-r--r--release/scripts/presets/tracking_camera/1_slash_3.2_inch.py (renamed from release/scripts/presets/camera/iPhone_4S.py)3
-rw-r--r--release/scripts/presets/tracking_camera/2__colon__3_inch.py9
-rw-r--r--release/scripts/presets/tracking_camera/2_slash_3_inch.py4
-rw-r--r--release/scripts/presets/tracking_camera/4__colon__3_inch.py9
-rw-r--r--release/scripts/presets/tracking_camera/APS-C.py4
-rw-r--r--release/scripts/presets/tracking_camera/APS-C_(Canon).py4
-rw-r--r--release/scripts/presets/tracking_camera/APS-H_(Canon).py4
-rw-r--r--release/scripts/presets/tracking_camera/Analog_16mm.py4
-rw-r--r--release/scripts/presets/tracking_camera/Analog_35mm.py4
-rw-r--r--release/scripts/presets/tracking_camera/Analog_65mm.py4
-rw-r--r--release/scripts/presets/tracking_camera/Analog_IMAX.py4
-rw-r--r--release/scripts/presets/tracking_camera/Analog_Super_16.py4
-rw-r--r--release/scripts/presets/tracking_camera/Analog_Super_35.py4
-rw-r--r--release/scripts/presets/tracking_camera/Arri_Alexa.py9
-rw-r--r--release/scripts/presets/tracking_camera/Arri_Alexa_65.py4
-rw-r--r--release/scripts/presets/tracking_camera/Arri_Alexa_LF.py4
-rw-r--r--release/scripts/presets/tracking_camera/Arri_Alexa_Mini_&_SXT.py4
-rw-r--r--release/scripts/presets/tracking_camera/Blackmagic_Cinema_Camera.py9
-rw-r--r--release/scripts/presets/tracking_camera/Blackmagic_Pocket_&_Studio.py4
-rw-r--r--release/scripts/presets/tracking_camera/Blackmagic_Pocket_4K.py4
-rw-r--r--release/scripts/presets/tracking_camera/Blackmagic_Pocket_6k.py4
-rw-r--r--release/scripts/presets/tracking_camera/Blackmagic_Pocket_Cinema_Camera.py9
-rw-r--r--release/scripts/presets/tracking_camera/Blackmagic_Production_Camera_4K.py9
-rw-r--r--release/scripts/presets/tracking_camera/Blackmagic_URSA_4.6K.py4
-rw-r--r--release/scripts/presets/tracking_camera/Blender.py10
-rw-r--r--release/scripts/presets/tracking_camera/Canon_1100D.py9
-rw-r--r--release/scripts/presets/tracking_camera/Canon_APS-C.py9
-rw-r--r--release/scripts/presets/tracking_camera/Canon_APS-H.py9
-rw-r--r--release/scripts/presets/tracking_camera/Canon_C300.py9
-rw-r--r--release/scripts/presets/tracking_camera/Foveon_(Sigma).py4
-rw-r--r--release/scripts/presets/tracking_camera/Full_Frame_35mm_Camera.py9
-rw-r--r--release/scripts/presets/tracking_camera/Fullframe.py4
-rw-r--r--release/scripts/presets/tracking_camera/GoPro_Hero3_Black.py10
-rw-r--r--release/scripts/presets/tracking_camera/GoPro_Hero3_Silver.py10
-rw-r--r--release/scripts/presets/tracking_camera/GoPro_Hero3_White.py10
-rw-r--r--release/scripts/presets/tracking_camera/MFT.py4
-rw-r--r--release/scripts/presets/tracking_camera/Medium-format_(Hasselblad).py4
-rw-r--r--release/scripts/presets/tracking_camera/Nexus_5.py10
-rw-r--r--release/scripts/presets/tracking_camera/Nikon_D3100.py9
-rw-r--r--release/scripts/presets/tracking_camera/Nikon_DX.py9
-rw-r--r--release/scripts/presets/tracking_camera/Panasonic_AG-HVX200.py9
-rw-r--r--release/scripts/presets/tracking_camera/Panasonic_LX2.py9
-rw-r--r--release/scripts/presets/tracking_camera/RED_Dragon_5K.py4
-rw-r--r--release/scripts/presets/tracking_camera/RED_Dragon_6K.py4
-rw-r--r--release/scripts/presets/tracking_camera/RED_Helium_8K.py4
-rw-r--r--release/scripts/presets/tracking_camera/RED_Monstro_8K.py4
-rw-r--r--release/scripts/presets/tracking_camera/Red_Epic.py9
-rw-r--r--release/scripts/presets/tracking_camera/Red_One_2K.py9
-rw-r--r--release/scripts/presets/tracking_camera/Red_One_3K.py9
-rw-r--r--release/scripts/presets/tracking_camera/Red_One_4K.py9
-rw-r--r--release/scripts/presets/tracking_camera/Samsung_Galaxy_S3.py10
-rw-r--r--release/scripts/presets/tracking_camera/Samsung_Galaxy_S4.py10
-rw-r--r--release/scripts/presets/tracking_camera/Sony_A55.py9
-rw-r--r--release/scripts/presets/tracking_camera/Sony_EX1.py9
-rw-r--r--release/scripts/presets/tracking_camera/Sony_F65.py9
-rw-r--r--release/scripts/presets/tracking_camera/Super_16.py9
-rw-r--r--release/scripts/presets/tracking_camera/Super_35.py9
-rw-r--r--release/scripts/presets/tracking_camera/iPhone_4.py10
-rw-r--r--release/scripts/presets/tracking_camera/iPhone_4S.py10
-rw-r--r--release/scripts/presets/tracking_camera/iPhone_5.py10
-rw-r--r--release/scripts/startup/bl_operators/geometry_nodes.py4
-rw-r--r--release/scripts/startup/bl_operators/userpref.py2
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_lightmap.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_constraint.py1
-rw-r--r--release/scripts/startup/bl_ui/properties_grease_pencil_common.py6
-rw-r--r--release/scripts/startup/bl_ui/properties_paint_common.py4
-rw-r--r--release/scripts/startup/bl_ui/space_node.py4
-rw-r--r--release/scripts/startup/bl_ui/space_sequencer.py15
-rw-r--r--release/scripts/startup/bl_ui/space_toolsystem_toolbar.py24
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py1
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py8
-rw-r--r--release/scripts/startup/bl_ui/space_view3d_toolbar.py14
-rw-r--r--release/scripts/startup/nodeitems_builtins.py13
-rw-r--r--release/steam/README.md70
-rw-r--r--release/steam/blender_app_build.vdf.template17
-rw-r--r--release/steam/create_steam_builds.py397
-rw-r--r--release/steam/depot_build_linux.vdf.template31
-rw-r--r--release/steam/depot_build_macos.vdf.template30
-rw-r--r--release/steam/depot_build_win.vdf.template31
-rw-r--r--release/windows/manifest/blender.exe.manifest.in6
-rw-r--r--release/windows/msix/README.md84
-rw-r--r--release/windows/msix/create_msix_package.py197
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.")