From a102d3e45463c999aab03b8605a03d9418b6b27b Mon Sep 17 00:00:00 2001 From: Christoph Lendenfeld Date: Thu, 22 Feb 2024 14:44:26 +0100 Subject: [PATCH 1/2] Fix #99635: Make last frame of motion path range inclusive The issue described was that the motion path didn't display the last frame of a scene. This PR makes the user facing motion path range inclusive on both ends. E.g. when the user specifies a motion path from 1-24 the will now get all 24 frames, whereas previously the motion path would end at frame 23. This also makes the `Scene Frame Range` option work properly since that had the same issue. Now it displays the actual full scene range. Internally, the `bMotionPath` is still exclusive on the upper bound. It is just the `bAnimVizSettings` range that has been modified. Pull Request: https://projects.blender.org/blender/blender/pulls/118611 --- source/blender/blenkernel/intern/anim_visualization.cc | 9 +++++---- .../blender/draw/engines/overlay/overlay_motion_path.cc | 2 +- source/blender/makesdna/DNA_action_types.h | 6 +++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/source/blender/blenkernel/intern/anim_visualization.cc b/source/blender/blenkernel/intern/anim_visualization.cc index 940d63f6c06..a0807285901 100644 --- a/source/blender/blenkernel/intern/anim_visualization.cc +++ b/source/blender/blenkernel/intern/anim_visualization.cc @@ -141,8 +141,9 @@ bMotionPath *animviz_verify_motionpaths(ReportList *reports, return nullptr; } - const int expected_length = avs->path_ef - avs->path_sf; - BLI_assert(expected_length > 0); /* Because the `if` above. */ + /* Adding 1 because the avs range is inclusive on both ends. */ + const int expected_length = (avs->path_ef - avs->path_sf) + 1; + BLI_assert(expected_length > 1); /* Because the `if` above. */ /* If there is already a motionpath, just return that, provided its settings * are ok (saves extra free+alloc). */ @@ -159,7 +160,7 @@ bMotionPath *animviz_verify_motionpaths(ReportList *reports, /* Only reuse a path if it was already a valid path, and of the expected length. */ if (mpath->start_frame != mpath->end_frame && mpath->length == expected_length) { mpath->start_frame = avs->path_sf; - mpath->end_frame = avs->path_ef; + mpath->end_frame = avs->path_ef + 1; return mpath; } @@ -173,7 +174,7 @@ bMotionPath *animviz_verify_motionpaths(ReportList *reports, /* Copy mpath settings from the viz settings. */ mpath->start_frame = avs->path_sf; - mpath->end_frame = avs->path_ef; + mpath->end_frame = avs->path_ef + 1; mpath->length = expected_length; if (avs->path_bakeflag & MOTIONPATH_BAKE_HEADS) { diff --git a/source/blender/draw/engines/overlay/overlay_motion_path.cc b/source/blender/draw/engines/overlay/overlay_motion_path.cc index 0968d76bac5..770674b3a71 100644 --- a/source/blender/draw/engines/overlay/overlay_motion_path.cc +++ b/source/blender/draw/engines/overlay/overlay_motion_path.cc @@ -93,7 +93,7 @@ static void motion_path_get_frame_range_to_draw(bAnimVizSettings *avs, } else { start = avs->path_sf; - end = avs->path_ef; + end = avs->path_ef + 1; } if (start > end) { diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h index 21bebd01555..b15758caecb 100644 --- a/source/blender/makesdna/DNA_action_types.h +++ b/source/blender/makesdna/DNA_action_types.h @@ -57,9 +57,9 @@ typedef struct bMotionPath { /** The number of cached verts. */ int length; - /** For drawing paths, the start frame number. */ + /** For drawing paths, the start frame number. Inclusive.*/ int start_frame; - /** For drawing paths, the end frame number. */ + /** For drawing paths, the end frame number. Exclusive. */ int end_frame; /** Optional custom color. */ @@ -113,7 +113,7 @@ typedef struct bAnimVizSettings { short path_bakeflag; char _pad[4]; - /** Start and end frames of path-calculation range. */ + /** Start and end frames of path-calculation range. Both are inclusive.*/ int path_sf, path_ef; /** Number of frames before/after current frame to show. */ int path_bc, path_ac; From eadfda30e6373f6c3595644f1238e8bb8c353093 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 22 Feb 2024 15:05:52 +0100 Subject: [PATCH 2/2] Fix: make format and make deps not using new lib directory --- GNUmakefile | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 0ab8c7572e0..7e7a0922aea 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: GPL-2.0-or-later -# This Makefile does an out-of-source CMake build in ../build_`OS`_`CPU` +# This Makefile does an out-of-source CMake build in ../build_`OS` # eg: # ../build_linux_i386 # This is for users who like to configure & build blender with a single command. @@ -35,7 +35,7 @@ Other Convenience Targets * deps: Build library dependencies (intended only for platform maintainers). The existence of locally build dependencies overrides the pre-built dependencies from subversion. - These must be manually removed from '../lib/' to go back to using the pre-compiled libraries. + These must be manually removed from 'lib/' to go back to using the pre-compiled libraries. Project Files Generate project files for development environments. @@ -165,6 +165,16 @@ OS:=$(shell uname -s) OS_NCASE:=$(shell uname -s | tr '[A-Z]' '[a-z]') CPU:=$(shell uname -m) +# Use our OS and CPU architecture naming conventions. +ifeq ($(CPU),x86_64) + CPU:=x64 +endif +ifeq ($(OS_NCASE),darwin) + OS_LIBDIR:=macos +else + OS_LIBDIR:=$(OS_NCASE) +endif + # Source and Build DIR's BLENDER_DIR:=$(shell pwd -P) @@ -186,26 +196,13 @@ ifndef DEPS_BUILD_DIR endif ifndef DEPS_INSTALL_DIR - DEPS_INSTALL_DIR:=$(shell dirname "$(BLENDER_DIR)")/lib/$(OS_NCASE) - - # Add processor type to directory name, except for darwin x86_64 - # which by convention does not have it. - ifeq ($(OS_NCASE),darwin) - ifneq ($(CPU),x86_64) - DEPS_INSTALL_DIR:=$(DEPS_INSTALL_DIR)_$(CPU) - endif - else - DEPS_INSTALL_DIR:=$(DEPS_INSTALL_DIR)_$(CPU) - endif + DEPS_INSTALL_DIR:=$(shell dirname "$(BLENDER_DIR)")/lib/$(OS_LIBDIR)_$(CPU) endif # Set the LIBDIR, an empty string when not found. -LIBDIR:=$(wildcard ../lib/${OS_NCASE}_${CPU}) +LIBDIR:=$(wildcard $(BLENDER_DIR)/lib/${OS_LIBDIR}_${CPU}) ifeq (, $(LIBDIR)) - LIBDIR:=$(wildcard ../lib/${OS_NCASE}_${CPU}_glibc_228) -endif -ifeq (, $(LIBDIR)) - LIBDIR:=$(wildcard ../lib/${OS_NCASE}) + LIBDIR:=$(wildcard $(BLENDER_DIR)/lib/${OS_LIBDIR}) endif # Find the newest Python version bundled in `LIBDIR`.