As a serious AR-game for Japanese or Chinese learners. There are a bunch of Kanji-Markers scattered on the table. Try different Kanji-combinations to find the meaningful words!
Here is the table of supported kanjis in the demo, you can also find it in meta.json.
| 花 | 火 | 日 | 本 | 電 | 車 | |
|---|---|---|---|---|---|---|
| Marker | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| UTF8 | E88AB1 | E781AB | E697A5 | E69CAC | E99BBB | E8BB8A |
| Meaning | Flower | Fire | Sun | Book | Electricity | Car |
| Onyomi | カ | カ | ニチ・ジツ | ホン | デン | シャ |
| Kunyomi | はな | ひ・ほ | ひ・か | もと | いなずま | くるま |
Warning: The tangos in meta.json doesn't cover all possible combinations of given monjis. For instance, you may notice that 「日」(sun) and
「本」(book) can be combined as 「
日
本
」(Japan) or 「
本
日
」(Today), also 「花」(Flower) and
「火」(Fire) can form 「
花
火
」(Firework) or 「
火
花
」(Sparkle). In this demo we only consider 「花火」 and 「日本」, the reaason for that it's hard to find some free models to represent sparkle and toady. If you want to get more possible 「単語」(tango) combinations, just edit the meta.json and make sure the corresponding model file also avaliable in model folder.
Here are all possible combinations (tangos) presented on the screen. Red line indicates that two Kanjis are not fit with each other, green on the contrary.
| All combination lines | Only combinable lines |
|---|---|
![]() |
![]() |
There is also a OpenCV window for monitoring the marker tracking status for sake of debugging.

| Meaningful Combination | Unmeaningful Combination | |
|---|---|---|
| Screenshot | ![]() |
![]() |
| 単語(Tango) | 電車 | 本電 |
| Rotated Marker | Normally placed Marker | |
|---|---|---|
| Screenshot | ![]() |
![]() |
| 単語(Tango) | 日本 | 花火 |
- OpenCV Vision Library
- GLEW OpenGL API
- GLFW API for creating OpenGL-Context and window
- JsonCpp JSON Parser
- Tesseract Optical Character Recognition Library
- Leptonica Image support for Tesseract
- FTGL Font rendering in OpenGL-Context
- SOIL2 For loading 2D textures
- assimp For loading 3D models
It's recommendable to use vcpkg to manage the libraries, which is a package manager tool just like the pip for Python, maven for Java or npm for JavaScript. It's really convenient to use it to make our lives easier from building a bunch of related dependencies and so on.
Before Building: Dont forget to change the path to your vcpkg in CmakeLists.txt at Line 4.
.
├── etc
├── model
├── font
├── shader
├── jpn_tess
├── meta.json
├── build
├── CMakeLists.txt
├── Main.cpp
├── MetaManager.h
├── Model.h
├── Tracker.h
├── ...
└── README.md
You may check that model, font, shader, jpn_tess and meta.json are under the directory, they are necessary rescource files for starting the demo. You can use this document to print markers.
Copyright (c) 2022 Chang Luo












