Animated Book Menu
- Release Notes
- Introduction
- Quick Start
- Book Menu Data
- Controlling the pages of the book
- Additional Resources
- Blueprint Interface Documentation
Release Notes
Release 1.4.1 (New Version numbering)
Supported Unreal Engine Verisons
- UE 5.4
- UE 5.3
Overview
- Change of version numbering
- InteractExt Function added to BookMenuActor
- Performance improvements on AnimInstance
- UE 5.4 compatibility adjustments
- Fix of GetBookMenuData function of BookMenuActor
BookMenuActor
- InteractExt function added
- The Interactxt function additionally offers another Output with th UV Coordinates of the UVBookTrace
- Compatibility adjustments
- mainly added include files UE5.4 seems to require now
- GetBookMenuData fix
- Fixed a bug that caused that the WidgetInstances on UBookMenuData were still null after GetBookMenuData() on BookMenuActor
BookMenuComponent
- InteractExt function added
- just interfacing the InteractExt of the BookMenuActor
BookMenuAnimInstance
- Timer Callback added for page rendering to provide an option to improve performance if needed
- Developers can now configur the time between two rendercalls of the Widgets
- The Option is available in the BookMenuData Asset, Property: RedrawTime
- If 0 every frame will be rendered otherwise the given time in seconds will be used e.g. 0.1 for every 100ms
- Compatibility adjustments
- mainly added include files UE5.4 seems to require now
BookMenuData
- RedrawTime attribute added to control the time between two render calls of the widgets
BookMenuStatics
- Compatibility adjustments
- mainly added include files UE5.4 seems to require now
Release 5.3.2 for UE 5.3.2
Book Menu Actor and Book Menu Component
- Removed LastPageSectionIndex and Last Page Index Properties due to confusion about their purpose
- Get and Set BookMenu Data care now about cloning the data first before using it to avoid wrong runtime manipulation of data
- Set Book Menu Data now initializes the Book Menu Actor and Anim INstance correctly
Book Menu Interaction Actor
- Added additional Widget Components to fix stalling UI animations during page turn or if not focused
- Removed GetPageWidgetComponnt Function because it is obolete now
Book Menu Anim Instance
- refactoring of page rendering
Page Section Data Struct
- Widget Instances made readonly because the properties are only used at runtime internally
- Added some helper functions for rendering
- Removed Last Page Section Index and Last Page Index due to confusion about their usage
- SetInteractionActor Function added
Book Menu Statics
Release5.3.1 for UE 5.3.2
Book Menu Actor
-
Added Get Function for Property BookMenuData; GetBookMenuData
-
Added functions RegisterInteractionComponent and RegisterInteractionActor
-
Exposed the following Properties via respective Get Functions
- GetCurrentPageSectionIndex
- GetLastPageSectionIndex
- GetPendingPageSectionIndex
- GetCurrentPageIndex
- GetLastPageIndex
- GetBookIsOpen
- GetBookShouldOpen
- GetBookShouldClose
- GetPageSections
-
Added Keyboard Focus features and Gamepad Support
- SetKeyboardFocus
Book Menu Component
-
Exposed the following Properties via respective Get Functions
- GetCurrentPageSectionIndex
- GetLastPageSectionIndex
- GetPendingPageSectionIndex
- GetCurrentPageIndex
- GetLastPageIndex
- GetBookIsOpen
- GetBookShouldOpen
- GetBookShouldClose
- GetPageSections
-
Added Keyboard Focus features and Gamepad Support
- SetKeyboardFocus
BookMenuInteractionActor
- ArrowComponent added (PointerZero)
Book Menu Statics
- ResetWidgetInteractionPointer
Assets
- Updated Master Materials
- Folder structure in textures reorganized
- AnimMontage moved to own Folder
- Updated UV Layouts
Introduction
Introducing the Fully Animated and Ready-to-Use Skeletal Book Mesh Plugin, designed for those who want to elevate their 3D widget experience with an interactive, animated book interface.
This plugin allows you to render UMG User Widgets onto curved, animated book pages, making it perfect for creating immersive and engaging UI elements.
With this plugin, you can easily render custom User Widgets on the book's pages, bringing a dynamic and captivating interface to your project. The UV-based line trace interaction ensures precise input handling.
The book's functionality is fully exposed to blueprints, allowing you to control book animations and implement custom behaviors with ease.
All rendering features as well as the animation logic, are encapsulated within the Animation Instance Class, simplifying the integration and management of the book's visual elements.
Main Features of the Plugin
- Fully anminated and ready-to-use Skeletal Book Mesh
- Control Animations through simple functions like:
Open Book
,Close Book
,Jump to Page
(turning the pages) - Render targets to display interactable custom User Widgets on the Skeletal Book Mesh pages
- Interact with the Book Pages by simply calling the
Interact
function. The interact function will perform theLine Tracing
and Widget Pointer handling for you. - Send input to the widgets through the UE5 build in
Widget Interaction Component
. No plugin specific magice here.
Installation and Setup
If you want to have a detailed description about the following steps, please refer to: Getting Started
- Install the Plugin for the UE5 Version you are using. You can do so by going to the
Epic Games Launcher > Unreal Engine > Library > Vault > search for animated book menu
- If the Plugin does not show up in your Vault, you might need to purchase it first from the Marketplace
- Create a new Project or open an existing one
- Open Plugin Settings and enable the Plugin
Animated Book Menu
-
Very important: Open Project Settings and enable the option
Support UV From Hit Results
- Restart the Editor
Plugin Structure
C++ Classes
The plugin consists of two modules: a runtime module and an editor module.
The editor module, though currently basic, adds a new asset type called BookMenuActorData to the editor context menu.
This feature allows you to easily define and manage book menu data within the editor.
The runtime module provides the essential base classes for the plugin.
Most users won't need to interact with the C++ code, as the plugin's functionality is designed to be accessible through Blueprints.
Contents
In the content folder, you will find a variety of assets essential for creating interactive book menus:\
- Animations and Meshes: Ready-to-use assets for the book's animated movements and structure.
- Blueprints for Book Menu Logic: Pre-built Blueprints that you can copy and modify, or use as a base to derive your own custom Blueprints.
- Base and Example Widgets: Templates to help you design and create your own interactive book menu pages.
- Textures and Materials: Visual assets for customizing the appearance of your book menus.
- Example Book Menu Configuration Data: Sample data configurations to help you get started quickly and understand the setup process.
Quick Start
Prerequisites
- Make sure the correct version of Unreal Engine is installed (UE 5.3+)
- Make sure you have purchased the Plugin from the Marketplace and installed it to the Engine
Create a new Project
Open Unreal Engine Launcher and launch Unreal Engine (5.3+)
Create a new Project
- Select Blank Project
- Select Blueprint with Target Platform Windows, Quality Preset Maximum and leave Starter Content and Raytracing unchecked
- Name the Project GettingStarted
- Click on Create
Project Settings
- Once the project has loaded, go to
Settings > Project Settings
- In the Search bar type: Support UV From Hit Results
- Enable the setting
Optimization > Support UV From Hit Result
NOTE: If being asked to restart, ignore it, we will restart the editor after the next step
Enable Plugin
NOTE: If being asked to restart the editor, confirm with Restart Now
Prepare some Content
Folder Setup
- In the Content Browser under Content, create a new Folder with the name "BookMenu" and navigate to it.
Copy some initial files from the Plugins Content Folder
- In the Content Browser under Settings, make sure the Show Plugin Content option is checked
- Copy the following files from the Plugin Content folder to the BookMenu folder:
From | To |
---|---|
/BookMenu/Blueprints/BookMenuActor_BP | /Game/BookMenu/MyBookMenuActor_BP |
/BookMenu/BookData/Example_Book_Menu_Data | /Game/BookMenu/MyBookData |
Basic Player Pawn Setup
Create Player Pawn Blueprnt Class
- Create a new Blueprint Class and select Pawn and name it PlayerPawn_BP
- Open the PlayerPawn_BP Blueprint and under Components, add the following Components to the DefaultSceneRoot
- Camera
- BookMenu
- Camera
Configure the Book Menu Component
- and under Details->BookMenu set the following settings:
- While the two options are the copied assets from the previous Step.
Add some Begin Play Logic
- Add the following Blueprint nodes to the Begin Play event
- This sets the Input node to Game and UI and shows the mouse cursor.
Map Setup
Save the Map and set it as the Editor default map
Because we used the Blank Project Template, the editor will give us the default map at startup, which we have to save first.
Click on File > Save All
When being asked where to save the map, choose /BookMenu/Map.umap
Then goto Settings > Projects Settings > Maps & Modes
Set Editor Startup Map and Game Default Map to the Map we have saved previously.
Place Player Pawn on Map
Drag and Dop the PlayerPawn_BP Blueprint onto the map and adjust its position to something like that:
Select the recently placed PlayerPawn_BP
Actor and navigate to the Details Panel.
Under Auto Poses Player
, select Player 0
It is important to also delete the Player Start Object from the Map
Hit play, you should see something like this:
Just the Book lying open without any page turn or interaction.
That's what we will add next.
Automatic page turn logic
Open the MyBookData asset
(the one we copied earlier from the plugins content folder)
Uncheck Book Begins Play Open
and set the Start Page Section
to 0
As we remember from the previous play test, the book started in an open state. That was because those options were set.
Save the asset and run the game again by hitting Play.
You should now see that the book starts in an closed state and simply does nothing else.
Adjustments of the Book Menu Actor
NOTE: Because Begin Play is also exactly the moment where the whole initialization of the book, the rendering and the Anim instance happens, we should not call any book controls on begin play. But there is a solution by adding a one frame delay
Add the following Blueprint Nodes to Begin Play of MyBookMenuActor_BP
The Delay Until Next Tick must be called before any book control functions on Begin Play. Otherwise the initialization and the control calls collide with each other.
If you hit Play you should see an opening book animation ending like this: