Systems, methods, and computer-readable storage employing color copilot for digital painting software
The Color Copilot system assists artists in generating custom color palettes through user input, addressing the limitations of existing tools by providing real-time, intuitive color suggestions for digital painting.
Patent Information
- Application Number
- PCT/CN2024/131505
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-07-11
- Filing Date
- 2024-11-12
- Publication Date
- 2026-01-15
AI Technical Summary
Existing digital painting tools lack the ability to assist artists in selecting and harmonizing colors during the coloring process, relying on time-consuming manual methods that may not capture the artist's intended vision or mood.
A method and system using a Color Copilot that generates a custom color palette based on user input, including base color and lighting or material parameters, utilizing machine learning and photorealistic rendering techniques to provide real-time color suggestions.
Enables artists to create visually appealing and emotionally resonant works by allowing precise and context-aware color selection during digital painting, enhancing customization and intuitiveness.
Smart Images

Figure CN2024131505_15012026_PF_FP_ABST
Abstract
Description
SYSTEMS, METHODS, AND COMPUTER-READABLE STORAGE EMPLOYING COLOR COPILOT FOR DIGITAL PAINTING SOFTWARE
[0001] CROSS-REFERENCE TO RELATED APPLICATION
[0002] The present application claims priority to International Patent Application No. PCT / CN2024 / 105020 titled “SYSTEMS, APPARATUSES, METHODS, AND NON-TRANSITORY COMPUTER-READABLE STORAGE MEDIA EMPLOYING COLOR COPILOT FOR DIGITAL PAINTING SOFTWARE” , filed July 11, 2024, the entirety of which is incorporated by reference herein.FIELD
[0003] The present disclosure relates to digital painting in particular to methods, systems, and computer-readable media for generating a color palette.BACKGROUND
[0004] In the field of design and digital artistry, color selection is a crucial but often challenging task. Designers and artists strive to create visually appealing and emotionally resonant works, and their choice of color palettes is therefore a fundamental aspect of the creative process.
[0005] Traditionally, selecting and harmonizing colors has relied on a combination of the artist’s personal intuition, color theory principles, and software tools that offer pre-defined palettes or manual selection options. However, these methods can be time-consuming and may not always capture the specific vision or mood the artist is seeking to convey. In particular, existing tools for assisting designers during the color design process focus on post-processing the image, or only assist the artist when applying line marks on a sketch. Such tools generally do not assist the user with color selection during the coloring process.SUMMARY
[0006] An efficient and easy to use method is provided for creating a custom color palette for digital painting software which can assist an artist with color selecting during the coloring process.
[0007] According to a first aspect of the disclosure, there is provided a method, using one or more computer processors, of generating a color palette, comprising: receiving user input from a user, wherein the user input specifies at least a base color and one or more parameters indicative of a lighting configuration or a material characteristic; generating the color palette based on at least the base color and the one or more parameters; and displaying the color palette on a display. As a result, embodiments according to the disclosure may allow for improved customization of color palettes. Furthermore, the user may interact with the palette in real-time while carrying out digital painting.
[0008] Receiving the user input may comprise receiving a voice prompt from the user.
[0009] Receiving the user input may comprise receiving a text prompt from the user.
[0010] Receiving the user input may comprise detecting one or more changes to one or more portions of an image displayed on the display.
[0011] Generating the color palette may comprise modifying, based on at least the base color and the one or more parameters, one or more of a hue, a saturation, and a luminance of each pixel in a set of pixels of the display, wherein the set of pixels correspond to a shape of the color palette that is to be displayed on the display
[0012] Processing the user input may comprise: generating prompt data based on the user input; inputting the prompt data to a machine learning model trained to generate different color palettes based on different prompts; and using the machine learning model to generate the color palette.
[0013] Generating the color palette may comprise generating a two-dimensional image of a spherical color palette, a cubic color palette, a conic color palette, or a tetrahedral color palette.
[0014] The one or more parameters may be indicative of the lighting configuration which comprises one or any combination of: an intensity of light; a direction in which light is propagating; a position of a light source; and a color of light. The variety of ways in which the user may specify particular lighting configuration may allow for improved fine-tuning of the desired color palette.
[0015] The one or more parameters may be indicative of the material characteristic which comprises one or any combination of the following: a reflectivity of a material; a translucency of a material; and a texture of a material. The variety of ways in which the user may specify particular material characteristics may allow for improved fine-tuning of the desired color palette.
[0016] Receiving the user input may comprise detecting one or both of: a pressure applied by a stylus; and a direction of the applied pressure. The one or more parameters may be indicative of the lighting configuration which comprises one or both of: an intensity of light, based on the applied pressure; and a direction in which light is propagating, based on the direction of the applied pressure. As a result, a user may be able to more accurately and more intuitively specify the particular light intensity and light direction in their user prompt.
[0017] Processing the user input may comprise generating text data based on the user input. Generating the color palette may comprise: generating code by inputting the text data to a text-to-code generator; and generating the color palette based on the code.
[0018] Generating the color palette may comprise inputting the code to a ray tracing application.
[0019] The method may further comprise detecting a further user input applied to one or more areas on the display. Generating the color palette may be further based on the detected further user input.
[0020] Detecting the further user input may comprise detecting one or any combination of: shading; highlighting; and a contour applied to the one or more areas on the display.
[0021] Detecting the further user input may comprise detecting the further user input applied to an object on the display. Generating the color palette may be further based on a shape of the object.
[0022] Detecting the further user input may comprise detecting one or more changes to one or more of a hue, a luminosity, and a saturation of one or more pixels of the display.
[0023] Generating the color palette may comprise generating the color palette such that a shape of the color palette corresponds to the shape of the object.
[0024] According to a further aspect of the disclosure, there is provided a non-transitory computer-readable storage medium storing computer program code configured, when executed by one or more processors, to cause the one or more processors to perform a method of generating a color palette, according to any of the above-described methods.
[0025] According to a further aspect of the disclosure, there is provided a computer system comprising: one or more processors; a display; and a computer-readable storage medium storing computer program code configured, when executed by one or more processors, to cause the one or more processors to perform a method of generating a color palette, according to any of the above-described methods.
[0026] This summary does not necessarily describe the entire scope of all aspects. Other aspects, features, and advantages will be apparent to those of ordinary skill in the art upon review of the following description of specific embodiments.
[0027] DRAWINGS
[0028] Embodiments of the disclosure will now be described in detail in conjunction with the accompanying drawings of which:
[0029] FIG. 1 is a schematic diagram of a computer network system, according to an embodiment of the disclosure;
[0030] FIG. 2 is a schematic diagram showing a simplified hardware structure of a computing device of the computer network system of FIG. 1, according to an embodiment of the disclosure;
[0031] FIG. 3 is a schematic diagram showing a simplified software architecture of a computing device of the computer system of FIG. 1, according to an embodiment of the disclosure;
[0032] FIG. 4 is a flow diagram of a method of generating a color palette, according to an embodiment of the disclosure;
[0033] FIG. 5 is a schematic diagram of a stylus’s orientation in terms of azimuth and altitude;
[0034] FIG. 6 is a flow diagram of a method of generating a color palette using a text-to-code generator, according to an embodiment of the disclosure;
[0035] FIG. 7 is a flow diagram of a method of generating a color palette using a trained artificial intelligence image generator, according to an embodiment of the disclosure;
[0036] FIGS. 8A and 8B are respective depictions of an object and a color palette generated for digitally painting the object, according to an embodiment of the disclosure;
[0037] FIGS. 9A and 9B are respective depictions of an object and a color palette generated for digitally painting the object, according to an embodiment of the disclosure;
[0038] FIG. 10 is a schematic diagram of a user using a stylus to select a color in a color palette;
[0039] FIG. 11 is a schematic diagram of different shadings being used to digitally paint portions of an object; and
[0040] FIG. 12 is a schematic diagram of a generated color palette displayed on a display.DETAILED DESCRIPTION
[0041] The present disclosure seeks to provide novel methods, systems, and computer-readable media for generating a color palette. While various embodiments of the disclosure are described below, the disclosure is not limited to these embodiments, and variations of these embodiments may well fall within the scope of the disclosure which is to be limited only by the appended claims.
[0042] According to embodiments of the disclosure, there are described methods, systems, and computer-readable media that may assist a user in generating a digital color palette (which may simply be referred to as a “color palette” throughout) . In particular, embodiments of the disclosure may assist users of a digital painting application with the generation of a suitable color palette based on the user’s specific color and lighting requirements, as described in further detail below. Generally, a digital color palette comprises a collection of predefined colors, each with distinct values for hue, saturation, and brightness (or luminance) , that can be selected and applied by users. These colors are typically organized in a way that allows easy access, often via a visual interface, and can be sampled using input devices such as a stylus or a mouse cursor.
[0043] The tool described herein (which may be referred to as a “Color Copilot” ) receives input from a user. In particular, the user may use natural language to specify material characteristics (including a base color, reflectivity, translucency, and texture) of an object, as well as a lighting configuration (including the position of one or more light sources, a light’s direction, its intensity, and its color) . Based on this user input, a machine learning model may generate the color palette, which according to some embodiments may be generated using a photorealistic two-dimensional image of a sphere. Using the generated color palette, users may then select a color for an individual stroke, or specify a range of colors for a series of strokes. The technology that allows the generation of the color palette may comprise graphical raytracing or generative artificial intelligence.
[0044] The Color Copilot described herein addresses limitations in the prior art by integrating photorealistic rendering techniques and artificial intelligence algorithms capable of understanding and processing user prompts to generate customized spherical color palettes. This approach allows the user to interact with the palette in real-time while carrying out the digital painting, and may provide precise and context-aware color suggestions to the user.
[0045] Turning now to FIGS. 1-3, there are shown and described examples of a computer architecture that may be used to implement the methods described herein. In what follows, a “module” is a term of explanation referring to a hardware structure such as a circuitry implemented using technologies such as electrical and / or optical technologies (and with more specific examples of semiconductors) for performing defined operations or processing. A “module” may alternatively refer to the combination of a hardware structure and a software structure, wherein the hardware structure may be implemented using technologies such as electrical and / or optical technologies (and with more specific examples of semiconductors) in a general manner for performing defined operations or processing according to the software structure in the form of a set of instructions stored in one or more non-transitory, computer-readable storage devices or media.
[0046] As will be described in more detail below, a module may be a part of a device, an apparatus, a system, and / or the like, wherein the module may be coupled to or integrated with other parts of the device, apparatus, or system such that the combination thereof forms the device, apparatus, or system. Alternatively, the module may be implemented as a standalone device or apparatus.
[0047] The module usually executes a procedure for performing a method. Herein, a procedure has a general meaning equivalent to that of a method. More specifically, a procedure is a defined method implemented using hardware components for processing data. A procedure may comprise or use one or more functions for processing data as designed. Herein, a function is a defined sub-procedure or sub-method for computing, calculating, or otherwise processing input data in a defined manner and generating or otherwise producing output data.
[0048] As those skilled in the art will appreciate, a procedure may be implemented as one or more software and / or firmware programs having necessary computer-executable code or instructions and stored in one or more non-transitory computer-readable storage devices or media which may be any volatile and / or non-volatile, non-removable or removable storage devices such as RAM, ROM, EEPROM, solid-state memory devices, hard disks, CDs, DVDs, flash memory devices, and / or the like. A module may read the computer-executable code from the storage devices and execute the computer-executable code to perform the procedure.
[0049] Alternatively, a procedure may be implemented as one or more hardware structures having necessary electrical and / or optical components, circuits, logic gates, integrated circuit (IC) chips, and / or the like.
[0050] Turning now to FIG. 1, a computer network system is shown and is generally identified using reference numeral 100. As shown, the computer network system 100 comprises one or more server computers 102, a plurality of client computing devices 104, and one or more client computer systems 106 functionally interconnected by a network 108, such as the Internet, a local area network (LAN) , a wide area network (WAN) , a metropolitan area network (MAN) , and / or the like, via suitable wired and wireless networking connections.
[0051] The server computers 102 may be computing devices designed specifically for use as a server, and / or general-purpose computing devices acting server computers while also being used by various users. Each server computer 102 may execute one or more server programs.
[0052] The client computing devices 104 may be portable and / or non-portable computing devices such as laptop computers, tablets, smartphones, Personal Digital Assistants (PDAs) , desktop computers, and / or the like. Each client computing device 104 may execute one or more client application programs which sometimes may be called “apps” .
[0053] Generally, the computing devices 102 and 104 comprise similar hardware structures such as the hardware structure shown in FIG. 2. As shown, the computing device 102 / 104 comprises a processing structure 122, a controlling structure 124, one or more non-transitory computer-readable memory or storage devices 126, a network interface 128, an input interface 130, and an output interface 132, functionally interconnected by a system bus 138. The computing device 102 / 104 may also comprise other components 134 coupled to the system bus 138.
[0054] The processing structure 122 may be one or more single-core or multiple-core computing processors, generally referred to as central processing units (CPUs) , such as microprocessors (INTEL is a registered trademark of Intel Corp., Santa Clara, CA, USA) , microprocessors (AMD is a registered trademark of Advanced Micro Devices Inc., Sunnyvale, CA, USA) , microprocessors (ARM is a registered trademark of Arm Ltd., Cambridge, UK) manufactured by a variety of manufactures such as Qualcomm of San Diego, California, USA, under the architecture, NVIDIA processor, or the like. When the processing structure 122 comprises a plurality of processors, the processors thereof may collaborate via a specialized circuit such as a specialized bus or via the system bus 138.
[0055] The processing structure 122 may also comprise one or more real-time processors, programmable logic controllers (PLCs) , microcontroller units (MCUs) , μ-controllers (UCs) , specialized / customized processors, hardware accelerators, and / or controlling circuits (also denoted “controllers” ) using, for example, field-programmable gate array (FPGA) or application-specific integrated circuit (ASIC) technologies, and / or the like. In some embodiments, the processing structure includes a CPU (otherwise referred to as a host processor) and a specialized hardware accelerator which includes circuitry configured to perform computations of neural networks such as tensor multiplication, matrix multiplication, and the like. The host processor may offload some computations to the hardware accelerator to perform computation operations of neural network. Examples of a hardware accelerator include a graphics processing unit (GPU) , Neural Processing Unit (NPU) , and Tensor Process Unit (TPU) . In some embodiments, the host processors and the hardware accelerators (such as the GPUs, NPUs, and / or TPUs) may be generally considered processors.
[0056] Generally, the processing structure 122 comprises necessary circuitries implemented using technologies such as electrical and / or optical hardware components for executing one or more processes, as the design purpose and / or the use case maybe. For example, the processing structure 122 may comprise logic gates implemented by semiconductors to perform various computations, calculations, and / or processing. Examples of logic gates include AND gate, OR gate, XOR (exclusive OR) gate, and NOT gate, each of which takes one or more inputs and generates or otherwise produces an output therefrom based on the logic implemented therein. For example, a NOT gate receives an input (for example, a high voltage, a state with electrical current, a state with an emitted light, or the like) , inverts the input (for example, forming a low voltage, a state with no electrical current, a state with no light, or the like) , and output the inverted input as the output.
[0057] While the inputs and outputs of the logic gates are generally physical signals and the logics or processing thereof are tangible operations with physical results (for example, outputs of physical signals) , the inputs and outputs thereof are generally described using numerals (for example, numerals “0” and “1” ) and the operations thereof are generally described as “computing” (which is how the “computer” or “computing device” is named) or “calculation” , or more generally, “processing” , for generating or producing the outputs from the inputs thereof.
[0058] Sophisticated combinations of logic gates in the form of a circuitry of logic gates, such as the processing structure 122, may be formed using a plurality of AND, OR, XOR, and / or NOT gates. Such combinations of logic gates may be implemented using individual semiconductors, or more often may be implemented as integrated circuits (ICs) .
[0059] A circuitry of logic gates may be “hard-wired” circuitry which, once designed, may only perform the designed functions. In this example, the processes and functions thereof are “hard-coded” in the circuitry.
[0060] With the advancement of technologies, it is often the case that a circuitry of logic gates such as the processing structure 122 may be alternatively designed in a general manner so that it may perform various processes and functions according to a set of “programmed” instructions implemented as firmware and / or software and stored in one or more non-transitory computer-readable storage devices or media. In this example, the circuitry of logic gates such as the processing structure 122 is usually of no use without meaningful firmware and / or software.
[0061] Of course, those skilled the art will appreciate that a process or a function (and thus the processor 102) may be implemented using other technologies such as analog technologies.
[0062] Referring back to FIG. 2, the controlling structure 124 comprises one or more controlling circuits, such as graphics controllers, input / output chipsets and the like, for coordinating operations of various hardware components and modules of the computing device 102 / 104.
[0063] The memory 126 comprises one or more storage devices or media accessible by the processing structure 122 and the controlling structure 124 for reading and / or storing instructions for the processing structure 122 to execute, and for reading and / or storing data, including input data and data generated by the processing structure 122 and the controlling structure 124. The memory 126 may be volatile and / or non-volatile, non-removable or removable memory such as RAM, ROM, EEPROM, solid-state memory, hard disks, CD, DVD, flash memory, or the like.
[0064] The network interface 128 comprises one or more network modules for connecting to other computing devices or networks through the network 108 by using suitable wired or wireless communication technologies such as Ethernet, (WI-FI is a registered trademark of Wi-Fi Alliance, Austin, TX, USA) , (BLUETOOTH is a registered trademark of Bluetooth Sig Inc., Kirkland, WA, USA) , Bluetooth Low Energy (BLE) , Z-Wave, Long Range (LoRa) , (ZIGBEE is a registered trademark of ZigBee Alliance Corp., San Ramon, CA, USA) , wireless broadband communication technologies such as Global System for Mobile Communications (GSM) , Code Division Multiple Access (CDMA) , Universal Mobile Telecommunications System (UMTS) , Worldwide Interoperability for Microwave Access (WiMAX) , CDMA2000, Long Term Evolution (LTE) , 3GPP, fifth-generation New Radio (5G NR) and / or other 5G networks, fifth-generation (6G) networks, and / or the like. In some embodiments, parallel ports, serial ports, USB connections, optical connections, or the like may also be used for connecting other computing devices or networks although they are usually considered as input / output interfaces for connecting input / output devices.
[0065] The input interface 130 comprises one or more input modules for one or more users to input data via, for example, a touch-sensitive screen, a touch-sensitive whiteboard, a touch-pad, a keyboard, a computer mouse, a trackball, a microphone, a scanner, a camera, and / or the like. The input interface 130 may be a physically integrated part of the computing device 102 / 104 (for example, the touch-pad of a laptop computer or the touch-sensitive screen of a tablet) , or may be a device physically separate from, but functionally coupled to, other components of the computing device 102 / 104 (for example, a computer mouse) . The input interface 130, in some implementations, may be integrated with a display output to form a touch-sensitive screen or a touch-sensitive whiteboard.
[0066] The output interface 132 comprises one or more output modules to output data to a user. Examples of the output modules comprise displays (such as monitors, LCD displays, LED displays, projectors, and the like) , speakers, printers, virtual reality (VR) headsets, augmented reality (AR) goggles, and / or the like. The output interface 132 may be a physically integrated part of the computing device 102 / 104 (for example, the display of a laptop computer or tablet) , or may be a device physically separate from but functionally coupled to other components of the computing device 102 / 104 (for example, the monitor of a desktop computer) .
[0067] The computing device 102 / 104 may also comprise other components 134 such as one or more positioning modules, temperature sensors, barometers, inertial measurement unit (IMU) , and / or the like.
[0068] The system bus 138 interconnects various components 122 to 134 enabling them to transmit and receive data and control signals to and from each other.
[0069] FIG. 3 shows a simplified software architecture of the computing device 102 or 104. On the software side, the computing device 102 or 104 comprises one or more application programs 164 (including the Color Copilot described herein) , an operating system 166, a logical input / output (I / O) interface 168, and a logical memory 172. The one or more application programs 164, operating system 166, and logical I / O interface 168 are generally implemented as computer-executable instructions or code in the form of software programs or firmware programs stored in the logical memory 172 which may be executed by the processing structure 122.
[0070] The one or more application programs 164 are executed by or run by the processing structure 122 to perform various tasks.
[0071] The operating system 166 manages various hardware components of the computing device 102 or 104 via the logical I / O interface 168, manages the logical memory 172, and manages and supports the application programs 164. The operating system 166 is also in communication with other computing devices (not shown) via the network 108 to allow application programs 164 to communicate with those running on other computing devices. As those skilled in the art will appreciate, the operating system 166 may be any suitable operating system such as (MICROSOFT and WINDOWS are registered trademarks of the Microsoft Corp., Redmond, WA, USA) , OS X, iOS (APPLE is a registered trademark of Apple Inc., Cupertino, CA, USA) , Linux, (ANDROID is a registered trademark of Google LLC, Mountain View, CA, USA) , or the like. The computing devices 102 and 104 may all have the same operating system, or may have different operating systems.
[0072] The logical I / O interface 168 comprises one or more device drivers 170 for communicating with respective input and output interfaces 130 and 132 for receiving data therefrom and sending data thereto. Received data may be sent to the one or more application programs 164 to be processed by one or more application programs 164. Data generated by the application programs 164 may be sent to the logical I / O interface 168 for outputting to various output devices (via the output interface 132) .
[0073] The logical memory 172 is a logical mapping of the physical memory 126 for facilitating access thereto by the application programs 164. In this embodiment, the logical memory 172 comprises a storage memory area that may be mapped to a non-volatile physical memory such as hard disks, solid-state disks, flash drives, and the like, generally for long-term data storage therein. The logical memory 172 also comprises a working memory area that is generally mapped to high-speed, and in some implementations volatile, physical memory such as RAM, generally for application programs 164 to temporarily store data during program execution. For example, an application program 164 may load data from the storage memory area into the working memory area, and may store data generated during its execution into the working memory area. The application program 164 may also store some data into the storage memory area as required or in response to a user’s command.
[0074] In a server computer 102, the one or more application programs 164 generally provide server functions for managing network communication with client computing devices 104 and facilitating collaboration between the server computer 102 and the client computing devices 104. Herein, the term “server” may refer to a server computer 102 from a hardware point of view or a logical server from a software point of view, depending on the context.
[0075] As described above, the processing structure 122 is usually of no use without meaningful firmware and / or software. Similarly, while a computer system such as the computer network system 100 may have the potential to perform various tasks, it cannot perform any tasks and is of no use without meaningful firmware and / or software. As will be described in more detail later, the computer network system 100 described herein and the modules, circuitries, and components thereof, as a combination of hardware and software, generally produce tangible results tied to the physical world, wherein the tangible results such as those described herein may lead to improvements to the computer devices and systems themselves, the modules, circuitries, and components thereof, and / or the like.
[0076] Turning now to FIG. 4, there is described a method of generating a color palette, according to an embodiment of the disclosure.
[0077] As can be seen in the flow diagram of FIG. 4, the process begins by the user selecting a base color (block 302) . For example, the user may perform an initial digital sketch of their art piece and may select the base color based on one of the objects in the art piece. For instance, the user may, using their stylus, interact with a touch-sensitive trackpad in order to sketch their art piece. In order to select the base color for one of the objects in the art piece, the user may bring their stylus 1012 into contact with a specific color displayed in a color palette 1010, for example as can be seen in FIG. 10. According to some embodiments, the base color may be specified using a natural language input. In particular, the base color may be specified when the user provides details regarding specific lighting conditions and / or material characteristics, as described in further detail below.
[0078] After selecting the base color, at block 304, the user provides a prompt to the Color Copilot which, as described above, is the tool that is used to generate the color palette using any of the methods described herein. Collectively, the selection of a base color, and the provision of a prompt (such as a natural language verbal or text prompt) may be referred to as the “user input” that is provided to the Color Copilot. The prompt may be provided by the user speaking out-loud and the audio being recorded by the computer’s microphone. Alternatively, the prompt that is provided may be a text prompt, or some other form of user input. The prompt may include details of the specific lighting conditions / configuration and / or material characteristics the user is seeking to convey in their design. More generally, the scope of the prompt may include any information relating to attributes of the object and / or attributes of the lighting on the object. For example, the prompt may specify one or more of an intensity of light, a direction in which light is propagating, a position of a light source, a color of light, a reflectivity of a material, a translucency of a material, and a texture of a material. Default settings may be used in the event that the user does not provide sufficient specificity in their prompt. An example of a prompt may be, “Ashiny metallic sphere placed on a wooden table reflects the warm, golden light of a sunset streaming in through a nearby window. ”
[0079] According to some embodiments, in order to specify, for example, a desired intensity and / or direction of light comprised in the user prompt to the Color Copilot, the user may employ their stylus. For example, as can be seen in FIG. 5, the orientation of the stylus 515, as defined by its altitude 505 and azimuth 510, may define the direction of the light, while the pressure applied by the stylus on the touch-sensitive surface may define the intensity of the light. These parameters may be adjusted in real-time with the user adjusting the pressure and / or the orientation of the stylus 515. As the parameters are adjusted, the color palette that is generated may be adjusted accordingly.
[0080] As described in further detail below, in response to receiving the user input (base color selection and user prompt) , the Color Copilot interprets the user input and generates the color palette based on the base color and the user prompt (block 306) . Generating the color palette may comprise, for example, for each pixel of the color palette, modifying the base color of the pixel based on the user prompt. This modification may comprise modifying, based on the user prompt, the hue, saturation, and / or brightness (or luminance) values associated with the pixel. The generated color palette then comprises a collection of different colors, each with distinct values for hue, saturation, and brightness (or luminance) , that can be selected and applied by the user. For instance, as can be seen in the example of FIG. 9B discussed in further detail below, the yellow base color has been modified on the left-hand side of the sphere to be darker in tone, whereas on the right-hand side of the sphere the yellow base color has been modified to be lighter in tone.
[0081] As can be seen in FIGS. 8B and 9B, the color palette may be generated as a sphere, although other shapes or styles of color palettes are possible, such as a cone, a cube, or a tetrahedron. As described in more detail below, according to some embodiments, the color palette may be generated through a text-to-code generator (for example, a Persistence of Vision Raytracer script) in which a ray tracer application creates the sphere based on generated source code. Alternatively, the color palette may be generated using a machine learning model trained to generate color palettes based on natural language prompts, as described below. For example, fine-tuned AI generator models such as diffusion models can be used to generate a color palettes from a natural language input prompt.
[0082] At block 308, the user may interact with the generated color palette for assistance with their digital painting. For example, the user may sample one or more colors of the palette, and then digitally paint an object using the selected color (s) . Sampling, in this case, may refer to the user making a selection of one or more colors of the color palette by interacting with the color palette. For example, the user may contact a particular point on the palette by contacting, using their stylus, the display displaying the palette. In another example, the user may click on a particular point on the palette by using a cursor. According to some embodiments, the user can select two points on the surface of the color palette, such as the brightest and darkest colors with which the user intends to paint. After selecting these points, a geodesic (the shortest path between two points on the surface of a sphere) may be automatically generated between them. This geodesic acts as a reference line or ruler that users can rely on to sample colors at various points along its path, and may define a smooth transition of shades between the selected points.
[0083] According to some embodiments, the user prompt may comprise a visual prompt instead of, or in addition to, a natural language prompt. For example, as illustrated in FIG. 11, the user may draw highlights and / or shadings on one or more areas 1110 of the object 1105. For example, the user may make changes to one or more of a hue, a luminosity, and a saturation of one or more pixels corresponding to object 1105. These edits may be detected by the Color Copilot and, based on these highlighted / shaded areas, and based on the selected base color, the Color Copilot may infer the color palette that is to be generated. In addition to highlights / shadings, the user may draw one or more contours of the object –this may assist the Color Copilot in generating the color palette.
[0084] For example, referring to FIG. 11, the Color Copilot may generate, based on the selected base color and based on shaded areas 1110 of object 1105, a color palette having the shape of object 1105. The color palette may be generated using, for example, a fine-tuned image generator model. The shape of the color palette may be inferred, for example, based on the outline of the object 1105. For instance, in one specific example, the user may draw the contours of a cube and may apply shading on only two of its faces. The Color Copilot would then infer and generate a cube-shaped palette, shaded with the specified base color under the inferred lighting. For example, the user may apply a dark shading to one side of the cube and a lighter shading to another side of the cube. The Color Copilot may therefore infer that light is striking the right-hand side of the cube, and the cubic color palette that then is generated as a result may have a colors on its right-hand side that are generally lighter in tone (these colors being based on the base color) , while the colors on its left-hand side may be generally darker in tone (these colors also being based on the base color) .
[0085] Following the generation of the color palette, the color that is to be applied may be automatically selected based on the location of the stylus relative to shaded areas 1110. The currently selected color may be overridden by the user selecting an alternative color from the generated color palette.
[0086] Turning to FIG. 6, there is shown a flow diagram of a method of generating a color palette in which a text-to-code generator is used. As can be seen, at block 302, a base color is selected and provided as input to the Color Copilot, as described above, and at block 304 a user prompt is provided to the Color Copilot. At block 306, the user input (comprising the combination of the selected base color and the user prompt) is processed by the Color Copilot. In particular, at block 402, a text-to-code generator is accessed. A text-to-code generator is used to convert a text input, such as a natural language text input, into corresponding source code. At block 404, the inputted text is converted into source code by the text-to-code generator. At block 406, a ray tracer application generates the color palette based on the source code outputted by the text-to-code generator. A ray tracer application is an application that may render images by tracing the path of light rays as they interact (for example, by reflection, refraction, or absorption) with objects in a scene. In particular, the generated source code includes detailed instructions for creating and rendering a spherical color palette. These instructions may cover aspects such as geometry, material properties such as specular reflection, roughness, and also color and texture which can include details about the color scheme and any textures that should be applied to the spherical color palette, possibly derived from the information specified in the user prompt. During this process, rays are cast from a virtual camera, and their interactions with the sphere (such as reflection, refraction, and shadow casting) are calculated to produce the final rendered image of the spherical color palette. This step includes displaying the color palette on a display, for example as can be seen in FIG. 12 with color palette 1205 displayed on display 1200. At block 308, the user may interact with the generated color palette as described above.
[0087] Turning to FIG. 7, according to an alternative embodiment, a generative machine learning model may be used to create the color palette. As can be seen, at block 302, a base color is selected and provided as input to the Color Copilot, as described above, and at block 304 a user prompt is provided to the Color Copilot. At block 306, the user input (comprising the combination of the selected base color and the user prompt) is processed by the Color Copilot to generate the Color Copilot which is then displayed on a display. In particular, at block 502, a generative machine learning model is accessed. The machine learning model may be, for example, a generative adversarial network (GAN) , or a diffusion model, specifically trained on a diverse dataset of images of spheres and corresponding base colors and user prompts specifying lighting configurations and / or material characteristics. As a result, the trained machine learning model, in response to receiving a user input comprising a base color and a details regarding a lighting configuration and / or material characteristics, may generate a corresponding spherical color palette. In particular, the model may process the user prompt by using natural language processing techniques to extract key features and guide the image generation process. The user input that is inputted to the trained machine learning model may first be converted into suitable “prompt data” that is specifically formatted for processing by the trained machine learning model. This form of pre-processing, which may be referred to as prompt formatting, restructures the input into a specific format to align the input with how the model was trained. Another form of pre-processing that may take place is text tokenization which refers to the breaking down of a natural language input into smaller units such as words, sub-words, or characters, so that the input can be processed more easily.
[0088] Turning to FIGS. 8A-9B, there are shown examples of color palettes generated based on different user inputs. For example, the color palette illustrated in FIG. 8B, intended to be used to color the bottle shown in FIG. 8A, may be generated using a certain hue of green as a base color, and with the user prompt, “Translucent marble-like sphere with soft point light sources on the left side” . The color palette illustrated in FIG. 9B, intended to be used to color the apple shown in FIG. 9A, may be generated using a certain hue of yellow as a base color, and with the user prompt, “Bright yellow sphere with rough texture, with warm lighting from the right side” . As described above, in response to these prompts, the Color Copilot will generate the desired color palettes, and the user can then easily select their desired colors from the sphere for different parts of the target object.
[0089] According to some embodiments, real-time adjustments may be made to the generated color palettes, allowing users to dynamically refine their color palettes as they describe different scenarios or artistic visions.
[0090] The methods described herein may be used in connection with any suitable digital painting software, design application, or any graphical editing tool used on a user device, such as a tablet or a desktop computer.
[0091] Herein, use of language such as “at least one of X, Y, and Z, ” “at least one of X, Y, or Z, ” “at least one or more of X, Y, and Z, ” “at least one or more of X, Y, and / or Z, ” or “at least one of X, Y, and / or Z, ” is intended to be inclusive of both a single item (e.g., just X, or just Y, or just Z) and multiple items (e.g., {X and Y} , {X and Z} , {Y and Z} , or {X, Y, and Z} ) . The phrase “at least one of” and similar phrases are not intended to convey a requirement that each possible item must be present, although each possible item may be present.
[0092] In some embodiments, the methods disclosed herein may be implemented as computer-executable instructions stored in one or more non-transitory computer-readable storage devices (in the form of software, firmware, or a combination thereof) such that, the instructions, when executed, may cause one or more physical components such as one or more circuits to perform the methods disclosed herein.
[0093] For example, in some embodiments, an apparatus comprising one or more processors functionally connected to one or more non-transitory computer-readable storage devices or media may be used to perform the methods disclosed herein, wherein the one or more non-transitory computer-readable storage devices or media store the computer-executable instructions of the methods disclosed herein, and the one or more processors may read the computer-executable instructions from the one or more non-transitory computer-readable storage devices or media, and executes the instructions to perform the methods disclosed herein.
[0094] In some embodiments, an apparatus may not have any processors or computer-readable storage devices or media. Rather, the apparatus may comprise any other suitable physical or virtual (explained below) components for implementing the methods disclosed herein.
[0095] In some embodiments, the computer-executable instructions that implement the methods disclosed herein may be one or more computer programs, one or more program products, or a combination thereof.
[0096] In some embodiments, the methods disclosed herein may be implemented as one or more circuits, one or more components, one or more units, one or more modules, one or more integrated-circuit (IC) chips, one or more chipsets, one or more devices, one or more apparatuses, one or more systems, and / or the like.
[0097] The one or more circuits, one or more components, one or more units, one or more modules, one or more IC chips, one or more chipsets, one or more devices, one or more apparatuses, or one or more systems may be physical, virtual, or a combination thereof. Herein, the term “virtual” (such as a “virtual apparatus” ) refers to a circuit, component, unit, module, chipset, device, apparatus, system, or the like that is simulated or emulated or otherwise formed using suitable software or firmware such that it appears as if it were “real” or physical) .
[0098] The present disclosure encompasses various embodiments, including not only method embodiments, but also other embodiments such as apparatus embodiments and embodiments related to non-transitory computer readable storage media. Embodiments may incorporate, individually or in combinations, the features disclosed herein.
[0099] Although this disclosure refers to illustrative embodiments, this is not intended to be construed in a limiting sense. Various modifications and combinations of the illustrative embodiments, as well as other embodiments of the disclosure, will be apparent to persons skilled in the art upon reference to the description.
[0100] Features disclosed herein in the context of any particular embodiments may also or instead be implemented in other embodiments. Method embodiments, for example, may also or instead be implemented in apparatus, system, and / or computer program product embodiments. In addition, although embodiments are described primarily in the context of methods and apparatus, other implementations are also contemplated, as instructions stored on one or more non-transitory computer-readable media, for example. Such media may store programming or instructions to perform any of various methods consistent with the present disclosure.
[0101] Those skilled in the art will appreciate that the above-described embodiments and / or features thereof may be customized, separated, and / or combined as needed or desired. Moreover, although embodiments have been described above with reference to the accompanying drawings, those of skill in the art will appreciate that variations and modifications may be made without departing from the scope thereof as defined by the appended claims.
Claims
1.A method, using one or more computer processors, of generating a color palette, comprising:receiving user input from a user, wherein the user input specifies at least a base color and one or more parameters indicative of a lighting configuration or a material characteristic;generating the color palette based on at least the base color and the one or more parameters; anddisplaying the color palette on a display.2.The method of claim 1, wherein receiving the user input comprises receiving a voice prompt from the user.3.The method of claim 1 or 2, wherein receiving the user input comprises receiving a text prompt from the user.4.The method of any one of claims 1-3, wherein generating the color palette comprises modifying, based on at least the base color and the one or more parameters, one or more of a hue, a saturation, and a luminance of each pixel in a set of pixels of the display, wherein the set of pixels correspond to a shape of the color palette that is to be displayed on the display.5.The method of any one of claims 1-4, wherein processing the user input comprises:generating prompt data based on the user input;inputting the prompt data to a machine learning model trained to generate different color palettes based on different prompts; andusing the machine learning model to generate the color palette.6.The method of any one of claims 1-5, wherein generating the color palette comprises generating a two-dimensional image of a spherical color palette, a cubic color palette, a conic color palette, or a tetrahedral color palette.7.The method of any one of claims 1-6, wherein the one or more parameters are indicative of the lighting configuration which comprises one or any combination of:an intensity of light; a direction in which light is propagating; a position of a light source; and a color of light.8.The method of any one of claims 1-7, wherein:the one or more parameters are indicative of the material characteristic which comprises one or any combination of the following:a reflectivity of a material; a translucency of a material; and a texture of a material.9.The method of any one of claims 1-8, wherein:receiving the user input comprises detecting one or both of:a pressure applied by a stylus; anda direction of the applied pressure; andthe one or more parameters are indicative of the lighting configuration which comprises one or both of:an intensity of light, based on the applied pressure; anda direction in which light is propagating, based on the direction of the applied pressure.10.The method of any one of claims 1-9, whereinprocessing the user input comprises generating text data based on the user input; andgenerating the color palette comprises:generating code by inputting the text data to a text-to-code generator; andgenerating the color palette based on the code.11.The method of claim 10, wherein generating the color palette comprises inputting the code to a ray tracing application.12.The method of any one of claims 1-11, wherein:the method further comprises detecting a further user input applied to one or more areas on the display; andgenerating the color palette is further based on the detected further user input.13.The method of claim 12, wherein detecting the further user input comprises detecting one or any combination of:shading; highlighting; and a contour applied to the one or more areas on the display.14.The method of claim 12 or 13, wherein detecting the further user input comprises detecting one or more changes to one or more of a hue, a luminosity, and a saturation of one or more pixels of the display.15.The method of any one of claims 12-14, wherein:detecting the further user input comprises detecting the further user input applied to an object on the display; andgenerating the color palette is further based on a shape of the object.16.The method of claim 15, wherein generating the color palette comprises generating the color palette such that a shape of the color palette corresponds to the shape of the object.17.A non-transitory computer-readable storage medium storing computer program code configured, when executed by one or more processors, to cause the one or more processors to perform a method of generating a color palette, according to any one of claims 1-15.18.A computer system comprising:one or more processors;a display; anda computer-readable storage medium storing computer program code configured, when executed by one or more processors, to cause the one or more processors to perform a method of generating a color palette, according to any one of claims 1-15.
Citation Information
Patent Citations
Application command control for small screen display
CN107077273A
Applying colors on textures
US20190385344A1
Weighted Color Palette Generation
US20210150775A1
Tonal palette generation
US20210335319A1
Systems and methods of generating color palettes with a generative adversarial network
US20220148232A1