CTNF 18/861,509 CTNF 99224 DETAILED ACTION Notice of Pre-AIA or AIA Status 07-03-aia AIA 15-10-aia The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA. Allowable Subject Matter 12-151-08 AIA 07-43 12-51-08 Claim 4,5,7,15,16,18,21,22 objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims. Information Disclosure Statement The information disclosure statement (IDS) submitted on 1/17/2025 is in compliance with the provisions of 37 CFR 1.97. Accordingly, the information disclosure statement is being considered by the examiner. Claim Rejections - 35 USC § 103 07-20-fti The following is a quotation of pre-AIA 35 U.S.C. 103(a) which forms the basis for all obviousness rejections set forth in this Office action: (a) A patent may not be obtained though the invention is not identically disclosed or described as set forth in section 102, if the differences between the subject matter sought to be patented and the prior art are such that the subject matter as a whole would have been obvious at the time the invention was made to a person having ordinary skill in the art to which said subject matter pertains. Patentability shall not be negated by the manner in which the invention was made. 07-21-aia AIA Claim (s) 1,2,6,9,10,13,19,17,23 are rejected under 35 U.S.C. 103 as being unpatentable over Lee(US-20110122139-A1), in view of Wang(CN-101470893-A) and Kilgard(US-20110285742-A1) . As per claim 1, Lee discloses An animation rendering method, comprising” (Lee teaches at (para. [0017]) a 2D vector graphics triangulation and drawing method: “The present invention provides a 2D vector graphics triangulation method, which includes the following steps. First, a binary tree data structure is used to store one triangle mesh or a plurality of triangle meshes generated by performing a triangulation processing to a 2D vector graphics.” This is analogous to an animation rendering method because it teaches rendering 2D vector graphics by generating, storing, and drawing triangulated mesh data) : determining a target graphic object on an image frame to be rendered in a target graphic animation and a graphic drawing mode of the target graphic object (Leeteaches at (para. [0009]) “the 2D vector graphics converting module is coupled to the memory module, and receives an input of the 2D vector graphics, and stores a plurality of curve control point coordinate values of the 2D vector graphics into the binary tree data structure.” Lee further states at (para. [0009]) that the converting module “performs a segmentation processing to the 2D vector graphics to generate one loop or a plurality of loops, and stores data of each loop into the binary tree data structure.” These passages disclose determining vector graphic structures to be rendered, but Lee does not expressly disclose that the object is in a target graphic animation frame or expressly determine a fill/stroke drawing mode.) ; determining whether the image frame to be rendered changes compared with an adjacent previous image frame with respect to a triangulation state of the target graphic object (Lee teaches at (para. [0041]) “Referring to FIG. 1 again, the triangle mesh processing module 120 includes a level of detail unit 121 , a loop update unit 122 and a triangle mesh update unit 123 . When a loop of the 2D vector graphics is deformed, the loop update unit 122 is configured to inspect all of intersections of the path structure, and updates the binary tree data structure corresponding to the path structure. When a loop of the 2D vector graphic is zoomed, the level of detail unit 121 is configured to proportionally adjust an error threshold according to a zoom condition of the loop. ” Lee also states at (para. [0044]), “After the loop update unit 122 detects a folding condition of the loop, it further inspects an intersecting condition between a folded triangle and a boundary line to determine an influence range of such deformation for the loop. Moreover, when the deformation causes a self-intersecting state of the path structure, the loop update unit 122 determines whether a loop is generated or disappeared by inspecting a variation of a total number of the intersections of the path structure. ” This is analogous to determining whether a triangulation state has changed, because the “state of a loop” controls whether the existing triangle mesh remains usable or whether triangulation must be updated.) ;“rendering the target graphic object on the image frame to be rendered based on triangulation data of a graphic object corresponding to the target graphic object” because Lee at (para. [0051]), “Then, the 2D vector graphics converting module 112 performs the triangulation processing to the 2D vector graphics 520 to generate a triangle mesh structure 530 , namely, the loop 1 and the loop 2 are respectively triangulated into a triangle mesh 532 and a triangle mesh 534 . The triangle mesh 532 is located above a control point V, and the triangle mesh 534 is located below the control point V.” Lee therefore expressly discloses rendering a vector graphic object based on stored triangulation/triangle-mesh data. However, Lee does not expressly disclose the full animation-frame context of wherein the adjacent previous image frame is a previous frame adjacent to the image frame to be rendered in the target graphic animation , nor does Lee expressly disclose that the drawing mode is a fill drawing mode before performing the change determination. Lee also does not expressly state that the stored triangulation data is specifically from an “adjacent previous image frame,” although it teaches reducing or avoiding repeated triangulation when the vector graphic state does not require re-triangulation. Wang discloses the missing animation-frame and repeated-object context for “wherein the adjacent previous image frame is a previous frame adjacent to the image frame to be rendered in the target graphic animation (because Wang states at page.1 line 17- page.2 line 2, “Flash (swf file) is an animation based on vector images of Adobe Company. The animation takes frames as the unit, and the frames are independent and the interval is about 20-100ms. The visual objects on each frame are defined vector graphics, so the display process of each frame of animation is divided into two steps: first, all vector graphics Real-time rendering, parsing the vector image into a pixel-based bitmap, and then displaying the corresponding bitmap on the device.” This passage expressly discloses a vector animation made of frames and vector objects on each frame. Wang further supports comparing/reusing objects across adjacent or consecutive frames because it states at page.2 line 18 – page.3 line 2, “In an actual flash file, vector graphics often appear in multiple frames. If these vector graphics are rendered in each frame, it will consume a lot of time. And if the bitmap image after the first rendering is cached according to the specified strategy, the rendering speed can be improved by directly using the bitmap cache when it is displayed later.” (Wang, Contents of the invention). Wang also states at page.8 lines 11-13 : “In the above method, continuous object means that in the flash animation, a certain display object maintains its original position or undergoes translation, scaling, rotation or color transformation in the following consecutive frames or tens of frames.”. These passages disclose the animation-frame context and the known benefit of reusing data for vector objects appearing in consecutive frames.) Kilgard discloses the missing fill-mode limitation in response to determining that the graphic drawing mode of the target graphic object is a fill drawing mode (Kilgard states at para. [0011-0012]: “Filling is similar to the way a child would ‘color in between the lines’ of a coloring book. If a sub-path within a path is not closed when such a sub-path is filled, the standard practice is to force the sub-path closed by connecting its end and start points with an implicit line segment, thereby closing the sub-path, and then filling that resulting closed path. While the meaning of ‘inside a path’ generally matches the intuitive meaning of this phrase, path rendering formalizes this notion with what is called a fill-rule. … Stroking is distinct from filling and is analogous to tracing or outlining each sub-path comprising a path as if with a pen or marker defined by a certain width. Stroking operates on the perimeter or boundary defined by the path whereas filling operates on the path's interior. Unlike filling, there is no requirement for the sub-paths within a path to be closed for stroking.” These passages expressly disclose that vector/path rendering includes a fill drawing mode distinct from stroking.) It would have been obvious to one of ordinary skill in the art before the effective filling date of the claimed invention to incorporate the teachings of Wang and Kilgard into the teachings of Lee in order to apply Lee’s stored triangle-mesh/triangulation-data reuse in Wang’s multi-frame vector animation environment, specifically for filled vector/path objects as taught by Kilgard, to predictably reduce per-frame computation by avoiding repeated triangulation and thereby improve animation rendering performance. As per claim 2 the combination of Lee, Wang and Kilgard disclose all the elements of claim 1 as discussed above. Lee also discloses wherein the determining whether the image frame to be rendered changes compared with an adjacent previous image frame with respect to a triangulation state of the target graphic object, comprises: determining whether the triangulation/mesh state of a 2D vector graphic has changed (Lee teaches at (para. [0046]) “In the present embodiment, when a state of a loop of the 2D vector graphics is changed, the triangle mesh update unit 122 updates the loop, and updates the triangle mesh corresponding to the updated loop.” This is analogous to determining whether the triangulation state has changed because the loop state controls whether the existing triangle mesh remains usable or whether triangulation must be adjusted or re-performed.); determining whether the image frame to be rendered changes compared with the adjacent previous image frame with respect to a number of vertexes of the target graphic object (Lee teaches at (para. [0040]) “Referring to FIG. 2, each of the loop structures 232 of the binary data structure 200 includes a corresponding triangle mesh 242 and a boundary line group 244 . The corresponding triangle mesh 242 includes a plurality of vertices forming the triangle mesh of the 2D vector graphics and a plurality of connection relationships between the vertices. The boundary line group 244 includes a plurality of boundary line structures 246 . Each of the boundary line structures 246 includes an error value 252 , a plurality of geometric structure characteristic values 254 of a current boundary line, and a pointer 256 pointed to an upper-level boundary line. ” Lee further teaches at (para. [0046]) “In the present embodiment, when a state of a loop of the 2D vector graphics is changed, the triangle mesh update unit 122 updates the loop, and updates the triangle mesh corresponding to the updated loop.” These passages disclose that the triangulation state is represented by triangle-mesh data including vertices and vertex-connection relationships, and that changes to the vector graphic loop cause the triangle mesh to be adjusted or re-triangulated. This is analogous to determining whether the object changes with respect to vertex number or vertex-based triangulation state.) Lee further supports this vertex-change determination because it teaches adding and removing boundary-line data when the graphic loop is split or merged (Lee teaches at (para. [0041]) “. Alternatively, when a loop of the 2D vector graphics is deformed, the level of detail unit 121 updates an error value of each boundary line of the loop. Moreover, the level of detail unit 121 splits a boundary line or merges two neighbouring boundary lines according to a comparison result of the error value and the error threshold. It should be noticed that in the present embodiment, the error threshold is set as a width of a pixel of a display image since human eyes cannot recognize a difference between a straight line and a curve under such level of detail. ” This supports a change determination based on the geometric structure of the vector object, including changes that would affect the number/configuration of boundary or mesh vertices.) ; and/or However, Lee does not expressly disclose determining whether the image frame to be rendered changes compared with the adjacent previous image frame with respect to a left/right state of an ear-tip vertex of the target graphic object, wherein the left/right state of the ear-tip vertex indicates whether a successor vector of the ear-tip vertex is on a left or right side of a precursor vector of the ear-tip vertex . Claim 2 recites “and/or,” thus only one of the above limitations need to be disclosed to be rejected. As per claim 6, the combination of Lee, Wang and Kilgard disclose all the limitations of claim 1 as discussed above. However, they do not fully disclose the remaining limitations of claim 6. ref_5 discloses further comprising: in response to determining that the graphic drawing mode of the target graphic object is a stroke drawing mode, performing triangulation processing on the target graphic object based on the triangulation data of the adjacent previous image frame of the image frame to be rendered, to obtain triangulation data corresponding to the target graphic object; (ref_5 teaches at (para. [0013]) “Various embodiments of systems, methods, and computer-readable storage media for generating a triangulation of a stroked path are disclosed. Instead of computing a stroke envelope approximating the boundary of a stroke region, a triangulation that approximates the stroke region may be generated.” ref_5 further teaches at (para. [0014]) “The triangulation of a stroked path may be generated once, cached (e.g., on the GPU), and potentially reused (e.g., while zooming and/or panning).” These passages expressly disclose stroke-path triangulation and reuse of cached triangulation data. This maps strongly to performing triangulation processing for a stroke drawing mode, ref_5 teaches cached reuse during later rendering conditions rather than expressly tying the reuse to an adjacent previous animation frame.) performing triangulation processing on the target graphic object based on the triangulation data of the adjacent previous image frame of the image frame to be rendered, to obtain triangulation data corresponding to the target graphic object through its multi-resolution refinement process (ref_5 teaches at (para. [0064]) “Triangles in the triangulation of a stroked path may be stored in order of refinement. The order of refinement may correspond to the order in which the triangles are generated … The triangulation of a stroked path may be generated once, cached (e.g., on the GPU), and potentially reused (e.g., while zooming and/or panning).” ref_5 further teaches at (para. [0072]) “The stored triangulation may be retrieved, and the triangulation may be rendered again using the stored triangles at any tolerance up to a. If additional triangles are needed, new refinement triangles may be added to the stored triangles to increase the refinement level of the triangulation.” These passages disclose obtaining current triangulation data by retrieving previously stored stroked-path triangulation data and, when needed, adding new refinement triangles. This is closely analogous to performing triangulation processing based on prior triangulation data to obtain triangulation data for the target object.) and rendering the target graphic object on the image frame to be rendered based on the triangulation data of the target graphic object because ref_5 expressly renders the stroked path using the generated triangulation (ref_5 teaches at (para. [0012]) “The stroked path may be rendered to an imaging device based on the one or more core triangles and the plurality of the refinement triangles in the triangulation of the stroked path. In rendering the stroked path, the triangulation may be sent to a graphics processing unit (GPU).” ref_5 further teaches at (para. [0078]) “the stroked path may be rendered to an imaging device based on the one or more core triangles and the plurality of the refinement triangles in the triangulation of the stroked path. In rendering the stroked path, the triangulation may be sent to a GPU.” These passages expressly disclose rendering a stroked graphic/path object based on triangulation data corresponding to that object.) However, ref_5 does not expressly disclose that the reused triangulation data is specifically triangulation data of the adjacent previous image frame of the image frame to be rendered in a target graphic animation. ref_5 teaches cached/retrieved triangulation data and reuse during later rendering operations, including zooming and/or panning, but it does not expressly describe an adjacent previous animation frame. Lee supplies additional support for using stored triangulation data as the basis for later mesh processing rather than re-performing triangulation from scratch (Lee teaches at (para. [0008]) “The memory module temporarily stores a triangle mesh generated by performing a triangulation processing to a 2D vector graphics, where the triangle mesh is stored into a binary tree data structure.” Lee further teaches at (para. [0037]) “FIG. 1 is a system block diagram illustrating a 2D vector graphics triangulation system according to an exemplary embodiment of the present invention. Referring to FIG. 1, in the present exemplary embodiment, the 2D vector graphics triangulation system 100 includes a 2D vector graphics converting module 112 , a triangle mesh drawing module 114 , a triangle mesh processing module 120 , a memory module 150 and a 2D vector graphics output module 160 . The memory module 150 is configured to temporarily store a triangle mesh generated by performing a triangulation processing to a 2D vector graphics, where the triangle mesh is stored into a binary tree data structure. The 2D vector graphics converting module 112 is connected to the memory module 150 , and is configured for receiving an input of the 2D vector graphics, and storing a plurality of curve control point coordinate values of the 2D vector graphics into the binary tree data structure. The triangle mesh drawing module 114 is configured to draw the triangle mesh according to the binary tree data structure. The triangle mesh processing module 120 is coupled to the memory module 150 , and is configured to adjust the triangle mesh, or re-perform the triangulation processing to a local region of the loop when a state of a loop of the 2D vector graphics is changed. The 2D vector graphics output module 160 is configured for outputting the binary tree data structure to a graphics processing unit (GPU) or a central processing unit (CPU), so as to present a drawn 2D vector graphics on a display (not shown). ” This supports using previously stored triangle-mesh/triangulation data and adjusting or locally updating it when the graphic state changes, rather than fully re-triangulating.) It would have been obvious to one of ordinary skill in the art before the effective filling data of the claimed invention to incorporate the teachings of ref_5 into the combination of teachings of Lee, Wang and Kilgard in order to reducing computational cost in 2D vector graphics rendering by storing triangulation/mesh data and avoiding unnecessary re-triangulation. This would improve rendering performance for stroked vector objects by reusing prior triangulation data and only generating additional triangulation data when necessary. As per claim 9, claim 9 recites similar claim language to claim 1. However, claim 9 recites “A non-transitory computer-readable storage medium having stored thereon instructions which, when executed on a terminal device, cause the terminal device to implement.” Kilgard also discloses this at para.[0054] “In operation, CPU 102 is the master processor of computer system 100 , controlling and coordinating operations of other system components. In particular, CPU 102 issues commands that control the operation of PPUs 202 . In some embodiments, CPU 102 writes a stream of commands for each PPU 202 to a pushbuffer (not explicitly shown in either FIG. 2A or FIG. 2B) that may be located in system memory 104 , parallel processing memory 204 , or another storage location accessible to both CPU 102 and PPU 202 . PPU 202 reads the command stream from the pushbuffer and then executes commands asynchronously relative to the operation of CPU 102 .” Here Kilgard suggests a computer-readable storage medium because they teach a rendering operation performed by a computer system having CPU, system memory, GPU and command streams stored in a pushbuffer accessible to the CPU and PPU supporting strong executable rendering commands in a computer readable memory. The rationale from claim 1 is incorporated herein. Claim 10 is similar in scope to claim 9, thus rejected under the same rationale. Claims 13 and 19, which are similar in scope to claim 2, thus rejected under the same rationale. Claims 17 and 23, which are similar in scope to claim 6, thus rejected under the same rationale . 07-22-aia AIA Claim (s) 3,14,20 is/are rejected under 35 U.S.C. 103 as being unpatentable over Lee Wang and Kilgard as applied to claim 2 above, and further in view of Shen(CN-106485766-A) . As per claim 3 the combination of Lee, Wang and Kilgard disclose all the elements of claim 2 as discussed above. Lee also discloses discloses wherein the determining whether the image frame to be rendered changes compared with the adjacent previous image frame with respect to a left/right state of an ear-tip vertex of the target graphic object, comprises: (Lee teaches at para.[0041]) “Referring to FIG. 1 again, the triangle mesh processing module 120 includes a level of detail unit 121 , a loop update unit 122 and a triangle mesh update unit 123 . When a loop of the 2D vector graphics is deformed, the loop update unit 122 is configured to inspect all of intersections of the path structure, and updates the binary tree data structure corresponding to the path structure. When a loop of the 2D vector graphic is zoomed, the level of detail unit 121 is configured to proportionally adjust an error threshold according to a zoom condition of the loop. ” This is analogous because Lee determines whether the state governing the triangle mesh has changed, which corresponds to determining whether a triangulation state has changed.); in response to determining that the image frame to be rendered does not change compared with the adjacent previous image frame with respect to the number of vertexes of the target graphic object (Lee teaches at (para. [0040]) “The corresponding triangle mesh 242 includes a plurality of vertices forming the triangle mesh of the 2D vector graphics and a plurality of connection relationships between the vertices. The boundary line group 244 includes a plurality of boundary line structures 246 . .” Lee further teaches at (para. [0046]) “In the present embodiment, when a state of a loop of the 2D vector graphics is changed, the triangle mesh update unit 122 updates the loop, and updates the triangle mesh corresponding to the updated loop.” This is analogous to determining whether the triangulation state has changed because the loop state controls whether the existing triangle mesh remains usable or whether triangulation must be adjusted or re-performed.) These passages disclose that the triangulation state is represented by triangle-mesh data including vertices and vertex-connection relationships, and that changes to the loop/mesh state determine whether triangulation must be updated. This is analogous to first checking whether the object changes with respect to vertex-based triangulation state.) However, Lee does not expressly disclose performing the step of determining whether the image frame to be rendered changes compared with the adjacent previous image frame with respect to a left/right state of an ear-tip vertex of the target graphic object. Lee discloses loop state, vertices, connection relationships, and mesh adjustment/re-triangulation, but it does not expressly disclose an “ear-tip vertex,” “successor vector,” “precursor vector,” or determining whether one vector is to the left or right of another. Shen discloses the missing ear-cutting / left-right-orientation concept for performing the step of determining whether the image frame to be rendered changes compared with the adjacent previous image frame with respect to a left/right state of an ear-tip vertex of the target graphic object (Shen teaches at page.9 line 15- page.10 line 2 “Step 4: Convex hull segmentation. The initial triangulation is generated by the recursive ear cutting method. Step 4-1: Determine the storage direction (clockwise or counterclockwise) of the input point set. Step 4-2: Initialize variable P 1 and assign P k-1 , initialize P 2 and assign P k , initialize P 3 and assign P k+1 (k is the number of a point in the point linked list, 1≤k≤n-1). Step 4-3: Judge the concavo - convexity of the point P2, if it is concave, set k=k+1 to judge again, until a point with prominent convexity is found.” These passages disclose an ear-cutting triangulation process in which three adjacent vertices P1, P2, and P3 are evaluated, the direction of the point set is determined, and the convexity/concavity of the middle point P2 is judged. This is analogous to determining a left/right state of an ear-tip vertex because convexity/concavity in an ordered polygon is determined from the relative orientation of adjacent predecessor and successor segments/vectors.) Shen further supports the claimed sequential operation of checking an ear-tip state after vertex-based conditions are satisfied because Shen teaches continuing the ear-cutting process only after finding a suitable convex point and validating the ear triangle (Shen further teaches at page.10 lines 3-9 “Step 4-4: Determine whether the line segment P 1 P 3 intersects with any side of the polygon, if so set k=k+1 and return to 4-3, otherwise execute the next step. Step 4-5: Add ΔP 1 P 2 P 3 to the triangular network. Step 4-6: Delete point P 2 from the polygon vertex set, if there are only three points left in the vertex set, add these three points to the triangular network algorithm to end; otherwise, return to 4-3.” These passages disclose that the triangulation process uses the current polygon vertex set, evaluates an ear candidate using adjacent vertices, adds the triangle when the ear is valid, and deletes the ear point from the vertex set. This is analogous to using vertex-state information first and then using an ear-tip orientation/convexity check to determine whether triangulation remains valid.) It would have been obvious to one of ordinary skill in the art before the effective filling data of the claimed invention to incorporate the teachings of Shen into the combination of teachings of Lee, Wang and Kilgard in order to achieve a more reliable triangulation-state check: when the vertex-based state is unchanged, the system could further check the ear-tip orientation/convexity state to determine whether the prior triangulation remains usable before re-performing triangulation. Claims 14 and 20, which are similar in scope to claim 3, thus rejected under the same rationale. Conclusion Any inquiry concerning this communication or earlier communications from the examiner should be directed to CHRIS ALEJANDRO PUNTIER whose telephone number is (703)756-1893. The examiner can normally be reached M-F 7:30-5:00. Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Daniel Hajnik can be reached at 571-272-7642. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300. Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000. /CHRIS ALEJANDRO PUNTIER/Examiner, Art Unit 2616 /DANIEL F HAJNIK/Supervisory Patent Examiner, Art Unit 2616 Application/Control Number: 18/861,509 Page 2 Art Unit: 2616 Application/Control Number: 18/861,509 Page 3 Art Unit: 2616 Application/Control Number: 18/861,509 Page 4 Art Unit: 2616