From ce1fff645d2b457919933c3f92cb6106fbb9b6a1 Mon Sep 17 00:00:00 2001 From: nitzanbueno Date: Sun, 20 Oct 2024 04:01:04 +0300 Subject: [PATCH] Improve line rendering performance by decreasing redundant subdivision count (#3893) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Reduce line cylinder height resolution to 2 Subdividing a line cylinder by its height adds no extra resolution - since it's not checkerboarded, all new rectangles would look the same as one long rectangle. Decreasing the default subdivision resolution to 2 reduces submobject count by 12x while sacrificing no quality. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Allow for 2 resolution values in Line3D This prevents a breaking change where a tuple of resolution values passed to Line3D.resolution would no longer work. Also applies to Arrow3D. * Assign field before init * Add checkered line info to docstring * Regenerate test control frame * Regenerate missing control frames --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Francisco ManrĂ­quez Novoa <49853152+chopan050@users.noreply.github.com> --- manim/mobject/three_d/three_dimensions.py | 19 +++++++++++++++++- .../threed/AddFixedInFrameMobjects.npz | Bin 5396 -> 5396 bytes .../control_data/threed/AmbientCameraMove.npz | Bin 7582 -> 7582 bytes .../control_data/threed/Arrow3D.npz | Bin 2495 -> 2251 bytes .../control_data/threed/Axes.npz | Bin 3873 -> 3873 bytes .../control_data/threed/CameraMove.npz | Bin 5580 -> 5580 bytes .../control_data/threed/CameraMoveAxes.npz | Bin 17629 -> 17629 bytes .../control_data/threed/Cone.npz | Bin 25831 -> 25831 bytes .../control_data/threed/Cube.npz | Bin 3057 -> 3057 bytes .../control_data/threed/Cylinder.npz | Bin 5046 -> 5046 bytes .../control_data/threed/Dot3D.npz | Bin 2071 -> 2071 bytes .../control_data/threed/Line3D.npz | Bin 7359 -> 4545 bytes .../control_data/threed/MovingVertices.npz | Bin 8701 -> 8701 bytes .../control_data/threed/Sphere.npz | Bin 24817 -> 24817 bytes .../control_data/threed/SurfaceColorscale.npz | Bin 122747 -> 122747 bytes .../control_data/threed/Torus.npz | Bin 117528 -> 117528 bytes .../control_data/threed/Y_Direction.npz | Bin 88858 -> 88858 bytes 17 files changed, 18 insertions(+), 1 deletion(-) diff --git a/manim/mobject/three_d/three_dimensions.py b/manim/mobject/three_d/three_dimensions.py index 86238551f3..7b30f9a7ad 100644 --- a/manim/mobject/three_d/three_dimensions.py +++ b/manim/mobject/three_d/three_dimensions.py @@ -895,6 +895,12 @@ class Line3D(Cylinder): The thickness of the line. color The color of the line. + resolution + The resolution of the line. + By default this value is the number of points the line will sampled at. + If you want the line to also come out checkered, use a tuple. + For example, for a line made of 24 points with 4 checker points on each + cylinder, pass the tuple (4, 24). Examples -------- @@ -915,9 +921,11 @@ def __init__( end: np.ndarray = RIGHT, thickness: float = 0.02, color: ParsableManimColor | None = None, + resolution: int | Sequence[int] = 24, **kwargs, ): self.thickness = thickness + self.resolution = (2, resolution) if isinstance(resolution, int) else resolution self.set_start_and_end_attrs(start, end, **kwargs) if color is not None: self.set_color(color) @@ -951,6 +959,7 @@ def set_start_and_end_attrs( height=np.linalg.norm(self.vect), radius=self.thickness, direction=self.direction, + resolution=self.resolution, **kwargs, ) self.shift((self.start + self.end) / 2) @@ -1122,6 +1131,8 @@ class Arrow3D(Line3D): The base radius of the conical tip. color The color of the arrow. + resolution + The resolution of the arrow line. Examples -------- @@ -1148,10 +1159,16 @@ def __init__( height: float = 0.3, base_radius: float = 0.08, color: ParsableManimColor = WHITE, + resolution: int | Sequence[int] = 24, **kwargs, ) -> None: super().__init__( - start=start, end=end, thickness=thickness, color=color, **kwargs + start=start, + end=end, + thickness=thickness, + color=color, + resolution=resolution, + **kwargs, ) self.length = np.linalg.norm(self.vect) diff --git a/tests/test_graphical_units/control_data/threed/AddFixedInFrameMobjects.npz b/tests/test_graphical_units/control_data/threed/AddFixedInFrameMobjects.npz index 08ca1e595a4b01c339d0497fdd864197312ac373..7387d9f2359359f0e735a2defee0df491129ffb5 100644 GIT binary patch delta 43 wcmbQDHAPD*z?+#xgn@y91BewFY*v-^~H2lrocL)@9J094zY%06{|#O#lD@ diff --git a/tests/test_graphical_units/control_data/threed/Arrow3D.npz b/tests/test_graphical_units/control_data/threed/Arrow3D.npz index a4fc4c5106d40447d4a655b9903fe2b7a2f23f04..a4a6c9b8735fe74c277a5bbfb114cde79ebb6ecd 100644 GIT binary patch delta 637 zcmV-@0)qX&6Uz}AP)h>@6aWAK2mk;8AplNQ?any}004jm832(Q9)CFq00000008aW zyGvV990%}plMem?f{-mKWT;?4`UiAt=~A&%(Ke++NhG!fX$#J-{U`hfoP8~>;^5}{ zG5dad>J3~;(?k=oy*@q%KHQUgZ@Ay#EI$sv^Xt`{m#^PGN_|Ux&wR)ayf0;*r!zmk zc4Ttt%*SHsOR2Z;t}IykkdN-a=>0s9Kfgclskc9W{yW=|OLulX&854Zb)L_jlYg<}cDqCD!{7d|-p5^7`hODft{9$!Dc@ z+&2CF z{UILJXH(3~%s6Kq007_$rBdmlKPu`k%jI&3X9BVD3IiH=2z~=lO928D02BZK00;m8 X03iTQRqf6>2$O>eHU@bJ00000&|NGy delta 891 zcmV->1BCp`5x)}}P)h>@EdT%j2mk;8Apo(w=2-v#|NsC0|NoI19)B$f00000008aX zO-o!?7zc2>5$s2hh_kZ=7Y(Ek`T@jEr665&Rm4~-R8zDqXxn}E{Rn;scfKnoS!Sc+ zYvSulg2eaeZJrB9uH#IDg)&L~4g8q7|L2}_&%i8vICsXsI==n-o9{lU`>pQxmPb8< z-2*LOm0JGz^?plhsXFC{#{<6%boGD#c;Hb_APx#!*SXZKr64<3He zT6*~9gLkh!Z!P^*RQj^y}fK?WF)(H?_SN< z1ONc=G3o5=%#MzZvh(xv?DX_BJ3c zc6N3p9lw41Haj^v$@jC?*4DDVzP_5T7XSe6vZkh{Y++%cqLr1Eiuvm5YSl6Ecm8eW zf2wx=zqx+QRc*dkuU_3MUtC>(%!{>9DUUsr zl-(vTpDV5%wQ70!Tq#d$F3&?8r&{Edf5sH^;&saNH0FJI`CMsD+kQ+_jqEjC2VYLTuE7Z{_^F^s(Bh$%wyjt zjY;RkbL3lFTUU7!d2*XPzI#+HFV>1#TtDS0OL@9Zd7j3U=iA%c*XAysAO0yXe;%i~ zQvZ~CrnFBL(j)az)kHt1uL1yo|5jsTV>UTCnVXoH$c>GS6~6)aoVw0zQ*Sb04+HXCjbBd diff --git a/tests/test_graphical_units/control_data/threed/CameraMove.npz b/tests/test_graphical_units/control_data/threed/CameraMove.npz index 23ccfb73b6be4a2b16dbdd1655fe36b91e412dd5..a884913567d4111d6214c99e50f4ea7568648b4c 100644 GIT binary patch delta 26 fcmX@3eMXx#z?+#xWOAdZ_(qu|QDzYa5ZfC7WgZ62 delta 43 rcmX@3eMVa!z?+#xgn@y91BewFxNgl`ry|V2(7-Cmuu;lSm|28DWOBB!Hvqd~2y6fV delta 43 scmdm{zD->!z?+#xmw|zS1BewFxNgl`_a6#2O8E&h>oVw0&KC9t05ymY+5i9m diff --git a/tests/test_graphical_units/control_data/threed/Dot3D.npz b/tests/test_graphical_units/control_data/threed/Dot3D.npz index 4593a97c0bc453528bc36f83b1ca22a667e06630..351dab60eebeeeedded9696d29a8f966751c3fd2 100644 GIT binary patch delta 43 xcmbO(FkL_@z?+#xgn@y91BewFR`ShfZ)Im-Xke9O*eJE0omqrIWbzqyZvdm`2rK{q delta 43 scmbO(FkL_@z?+#xmw|zS1BewFR`Shf{|^NlrPi}E>oVw0KEv(}02f{lMF0Q* diff --git a/tests/test_graphical_units/control_data/threed/Line3D.npz b/tests/test_graphical_units/control_data/threed/Line3D.npz index ccf2bb20af66dfe6aac0e13f5a98eeedb6105cd1..174b9a06e4f2274499ca52d1a3c067486d47452f 100644 GIT binary patch literal 4545 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 diff --git a/tests/test_graphical_units/control_data/threed/MovingVertices.npz b/tests/test_graphical_units/control_data/threed/MovingVertices.npz index 04006a76ed944599612f9b7312bc06c6bec70193..2da8e3a251fee7d2d29fa0a7f332d7f46ba994b8 100644 GIT binary patch delta 43 xcmezC{MT73z?+#xgn@y91BewF3ipdH%~oV!Xke9O*eEqsky(U6Wb!6OZvf#a3F`m= delta 43 scmezC{MT73z?+#xmw|zS1BewF3ipdH{SO5jrKTz}>oVw0-lXUa093gV1ONa4 diff --git a/tests/test_graphical_units/control_data/threed/Sphere.npz b/tests/test_graphical_units/control_data/threed/Sphere.npz index 58cd442676c86855d1b31a2fe6f54b074c4809f0..c007a0baa8119b7d1f5d9b7123662ce4e261015c 100644 GIT binary patch delta 45 zcmex(kn!U|MyUXAW)=|!1_llwR%CFA%ZrXrU|?uqm1Ni`)tSI7!XPqvS%NnJ1&Ipl delta 45 ucmex(kn!U|MyUXAW)@ur1_llwR%CFA%ZvUG1skP06PR_Gbtf-N@CE>NU=h>+ diff --git a/tests/test_graphical_units/control_data/threed/SurfaceColorscale.npz b/tests/test_graphical_units/control_data/threed/SurfaceColorscale.npz index 3a8539352e4bc5d0364e1206d5f10e9443306231..e3b4a5e957b25ae73f781ccb7b603551a20c3eac 100644 GIT binary patch delta 33 lcmeypkNx*PcGduIW)_j@2KO1o8)df2Fbdvh7GVJMy#dF&3U&Yh delta 49 ycmeypkNx*PcBuewW)@ur1_llwR%FN&^mF+S1&vZ$r5J_pGwU+wPB*yE=nVk1+Y&|K3L2%hN-=IY#jMMqJN@h_MsEO}&Jyzg diff --git a/tests/test_graphical_units/control_data/threed/Y_Direction.npz b/tests/test_graphical_units/control_data/threed/Y_Direction.npz index b4f0b39e545a718015600c7de5841f98a09a1ac4..7e3187910ce07a979d029b7af18ddb5fe6ed058e 100644 GIT binary patch delta 33 lcmbQWjdj*GR@MM-W)_j@=c5?K8)df2Fm8xq7GVJMy#cbD3GM&@ delta 49 ycmbQWjdj*GR;d7QW)@ur1_llwR%F;y5mNjg3L2%hN-=JVV%BBQoqj%w(Hj7%@)D2$