Add libreadline-dev dependency to README
[mouse-tracker-for-cubism.git] / README.md
1 # Mouse Tracker for Cubism
2
3 A library that tracks mouse cursor location and microphone input and
4 converts them into Live2D® Cubism SDK parameters.
5
6 This is a spin-off project from [Facial Landmarks for Cubism](https://github.com/adrianiainlam/facial-landmarks-for-cubism).
7 The objective is to provide similar functionality, but requiring much
8 less CPU load, which can be critical if the processor does not support
9 AVX instructions. It also does not require the use of a dataset which
10 restricts commercial use, and it does not require a webcam.
11
12 *Disclaimer: This library is designed for use with the Live2D® Cubism SDK.
13 It is not part of the SDK itself, and is not affiliated in any way with Live2D
14 Inc. The Live2D® Cubism SDK belongs solely to Live2D Inc. You will need to
15 agree to Live2D Inc.'s license agreements to use the Live2D® Cubism SDK.*
16
17 Video demo (comparing Mouse Tracker with Facial Landmarks, testing on OBS):
18 <https://www.youtube.com/watch?v=MA7H3v9dtxM>
19
20 ## Supporting environments
21
22 This library is designed for Linux (or other *nix systems) with X11 and
23 PulseAudio.
24
25 I have made use of one C++17 library (`<filesystem>`)
26 in the example program, but it should be straightforward to change this
27 if you don't have C++17 support.
28
29 ## Build instructions
30
31 1. Install dependencies.
32
33    You will require a recent C/C++ compiler, `make`, `patch`, CMake >= 3.16,
34    libxdo, PulseAudio, and readline. To compile the example
35    program you will also require the OpenGL library (and its dev headers)
36    among other libraries required for the example program. The libraries I
37    had to install (this list may not be exhaustive) are:
38
39        libxdo-dev libpulse-dev libgl1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libglu1-mesa-dev libreadline-dev
40
41 2. Clone this repository
42
43        git clone https://github.com/adrianiainlam/mouse-tracker-for-cubism.git
44
45 3. To build the library only: (Skip this step if you want to build the example
46    program. It will be done automatically.)
47
48        cd <path of the git repo>
49        ./build.sh
50
51 To build the example program:
52
53 4. Download "Cubism 4 SDK for Native R1" from the Live2D website:
54    <https://www.live2d.com/en/download/cubism-sdk/download-native/>.
55
56    Extract the archive -- put the "CubismSdkForNative-4-r.1" folder under
57    the "example" folder of this repo.
58
59    Note: The Cubism SDK is the property of Live2D and is not part of this
60    project. You must agree to Live2D's license agreements to use it.
61
62 5. Go into the
63    "example/CubismSdkForNative-4-r.1/Samples/OpenGL/thirdParty/scripts"
64    directory and run
65
66        ./setup_glew_glfw
67
68 6. Go back to the "example" directory and run
69
70        ./build.sh
71
72 7. Now try running the example program. From the "example" directory:
73
74        cd ./demo_build/build/make_gcc/bin/Demo/
75        ./Demo
76
77
78 ## Command-line arguments for the example program
79
80 Most command-line arguments are to control the Cubism side of the program.
81 Only one argument (`--config`) is used to specify the configuration file
82 for the Facial Landmarks for Cubism library.
83
84  * `--window-width`, `-W`: Specify the window width
85  * `--window-height`, `-H`: Specify the window height
86  * `--window-title`, `-t`: Specify the window title
87  * `--root-dir`, `-d`: The directory at which the "Resources" folder will
88    be found. This is where the model data will be located.
89  * `--scale-factor`, `-f`: How the model should be scaled
90  * `--translate-x`, `-x`: Horizontal translation of the model within the
91    window
92  * `--translate-y`, `-y`: Vertical translation of the model within the window
93  * `--model`, `-m`: Name of the model to be used. This must be located inside
94    the "Resources" folder.
95  * `--config`, `-c`: Path to the configuration file for the Mouse Tracker
96    for Cubism library. See below for more details.
97
98 ## Configuration file
99
100 There are fewer tweakable parameters compared to the Facial Landmarks
101 library, but I have still kept the configuration file to allow some
102 customization. The file
103 "config.txt" lists and documents all parameters and their default values.
104 You can change the values there and pass it to the example program using
105 the `-c` argument. If using the library directly, the path to this file
106 should be passed to the constructor (or pass an empty string to use
107 default values).
108
109 ## License
110
111 The library itself is provided under the MIT license. By "the library itself"
112 I refer to the following files that I have provided under this repo:
113
114  * src/mouse_cursor_tracker.cpp
115  * include/mouse_cursor_tracker.cpp
116  * and if you decide to build the binary for the library, the resulting
117    binary file (typically build/libMouseTrackerForCubism.a)
118
119 The license text can be found in LICENSE-MIT.txt, and also at the top of
120 the .cpp and .h files.
121
122 The example program is a patched version of the sample program provided
123 by Live2D (because there's really no point in reinventing the wheel),
124 and as such, as per the licensing restrictions by Live2D, is still the
125 property of Live2D.
126
127 The patch file (example/demo.patch) contains lines showing additions by
128 me, as well as deleted lines and unchanged lines for context. The deleted
129 and unchanged lines are obviously still owned by Live2D. For my additions,
130 where substantial enough for me to claim ownership, I release them under
131 the Do What the Fuck You Want to Public License, version 2. The full license
132 text can be found in LICENSE-WTFPL.txt.
133
134 All other files not mentioned above that I have provided in this repo
135 (i.e. not downloaded and placed here by you), *excluding* the two license
136 documents and files generated by Git, are also released under the Do What
137 the Fuck You Want to Public License, version 2, whose full license text
138 can be found in LICENSE-WTFPL.txt.
139
140 In order to use example program, or in any other way use this library
141 with the Live2D® Cubism SDK, you must agree to the license by Live2D Inc.
142 Their licenses can be found here:
143 <https://www.live2d.com/en/download/cubism-sdk/download-native/>.
144
145 This is not a license requirement, but if you find my library useful,
146 I'd love to hear from you! Send me an email at spam(at)adrianiainlam.tk --
147 replacing "spam" with the name of this repo :).
148
149 ## Contributions
150
151 Contributions welcome! This is only a hobby weekend project so I don't
152 really have many environments to test it on. Feel free to submit
153 issues or pull requests on GitHub, or send questions or patches to me
154 (see my email address above) if you prefer email. Thanks :)
155