Skip to content

LSCherry Framework

Lvoxx edited this page Dec 29, 2024 · 17 revisions

Overview

LSCherry makes creating NPR products for individuals and teams easy. It provides everything you need to integrate with Blender or Goo-Engine in a professional environment while supporting synchronization of third-party NPR libraries, offering flexibility to create various types of cel shading and stylized shading based on product needs. Starting from LSCherry Framework version 1.0.2, LSCherry requires Blender 4.0 or later.

LSCherry supports a variety of shading scenarios. Within a team, there are demands for synchronization and long-term stability across various models and environments built from multiple resources (e.g., merging multiple Blender files into a single Blender file). It also supports projects with frequent Blender or Goo-Engine version upgrades (e.g., from Blender 4.0.x to Blender 4.4.x). Some projects may apply multiple shading styles within the same environment, such as Toon, Handpainting, or Semi-real. Others might involve custom shading projects combined with LSCherry or rebuilding LSCherry with a different shading approach.

LSCherry is open source. It is a framework used in Lvoxx projects and consistently undergoes quality assurance over time.

What We Mean by "Cherry"

The term "Cherry" has different meanings depending on the context. It can refer to the LSCherry Framework project, which is where it all began. Over time, other Cherry projects have been built on top of the LSCherry Framework. Most often, when people mention "Cherry," they are referring to the entire ecosystem of LSCherry projects. This reference documentation focuses on the foundation: the LSCherry Framework itself.

  • LSCherry

  • Cherry-BPotato

  • Cherry-OSL

  • Cherry-Comic

  • Cherry- ... and more

The LSCherry Framework is divided into multiple modules, and projects can select the modules that fit their needs. At the core of the framework are modules within the core container, including the configuration model and the SnapPuzzle mechanism. Additionally, the LSCherry Framework provides foundational support for various types of shading, including pattern, procedural material, composition, environment, and game built-in shading, as well as cel shading. It also includes LSCherry Core (Dot), a shading framework based on Phong (N dot L-vector), and, in parallel, LSCherry Game Built-In and Simple Procedural Material.

History of LSCherry

The initial version of LSCherry was created around July 2023, based on the custom toon shading framework of aVersionOfReality. It featured several custom ramp functions and basic toon shading capabilities aligned with the features available in Blender 3.0 and 3.1. During this period, LSCherry was able to fulfill the requirements for custom toon shading but still had several shortcomings in terms of user experience and functionality synchronization when combined with various types of toon shading. The final version supported during this phase was LSCherry 105.

By version LSCherry 1.0.0, all features were built with a focus on modular assembly and functional node distribution.

Design Philosophy

When exploring a framework, it is essential not only to know what it does but also to understand the principles it adheres to. Below are the core principles of the LSCherry Framework:

  • Provide choices at every level. LSCherry allows you to defer design decisions until they are truly necessary. For example, you can switch between core and dot functionality through Geometry nodes without altering shading logic.

  • Accommodate diverse perspectives. LSCherry embraces flexibility and does not impose a rigid approach. It supports a wide range of shading requirements with different perspectives.

  • Maintain strong backward compatibility. The development of LSCherry is carefully managed to minimize breaking changes between versions. LSCherry supports a carefully selected range of Blender versions and third-party libraries to help sustain applications and libraries dependent on it.

  • Focus on Shading Flow. The LSCherry team dedicates significant time and effort to creating intuitive and robust nodes that remain reliable across multiple versions and years.

  • Set high standards for node quality. The LSCherry Framework places a strong emphasis on providing meaningful, comprehensive, and accurate documentation. It is one of the few projects with a clean code structure, free from circular dependencies between packages.

Feedback and Contributions

For usage guidance or troubleshooting and debugging questions, we recommend using Blender StackExchange. Using LSCherry tag. If you are certain there is an issue in the LSCherry Framework or wish to propose a new feature, please use Github Issues.

If you already have a solution or a suggested fix, you can submit a pull request on GitHub. However, please note that for all but the simplest issues, we expect a ticket to be created in the issue tracker, where discussions can take place and leave a record for future reference.

Getting Started

Core Technologies

Clone this wiki locally