找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 137|回复: 0

saba,专门用于操控MMD的文件,包括模型、动作数据等

[复制链接]

983

主题

83

回帖

5万

积分

管理员

积分
53122
发表于 2022-6-29 16:43:33 | 显示全部楼层 |阅读模式
Saba
· MMD (PMD/PMX/VMD) play and load library
· Viewer (MMD/OBJ)
o saba_viewer
· Example
o simple_mmd_viewer_glfw (OpenGL 4.1)
o simple_mmd_viewer_dx11 (DirectX 11)
o simple_mmd_viewer_vulkan (Vulkan 1.0.65)
o Transparent Window (GLFW 3.3.2 or higher, Windows)
Important Changes
UV was flipped with this commit.
Environment
· Windows
o Visual Studio 2019
o Visual Studio 2017
o Visual Studio 2015 Update 3
· Linux
· Mac
File types
· OBJ
· PMD
· PMX
· VMD
· VPD
· x file (mmd extension)
How to build
Please install CMake before the build.
Required libraries
Please prepare the following libraries.
· OpenGL
· GLFW
mingw
Do not use the msys/cmake. Pelase use the mingw64/mingw-w64-x86_64-cmake.
Prepare the mingw64 environment as follows.
pacman -S base-devel mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-ninja
pacman -S mingw-w64-x86_64-mesa
1. Setup Bullet PhysicsSetup Bullet Physics (on Windows)
Build Bullet Physics as follows.
cmake -G "Visual Studio 14 2015 Win64" ^
    -D CMAKE_INSTALL_PREFIX=<Your Bullet Physics install directory> ^
    -D INSTALL_LIBS=ON ^
    -D USE_MSVC_RUNTIME_LIBRARY_DLL=On ^
    -D BUILD_CPU_DEMOS=Off ^
    -D BUILD_OPENGL3_DEMOS=Off ^
    -D BUILD_BULLET2_DEMOS=Off ^
    -D BUILD_UNIT_TESTS=Off ^
    ..
cmake --build . --config Debug --target ALL_BUILD
cmake --build . --config Debug --target INSTALL
cmake --build . --config Release --target ALL_BUILD
cmake --build . --config Release --target INSTALL
Please change -G "Visual Studio 14 2015 Win64" according to your environment.
Setup Bullet Physics (on Mac)
brew install bullet
Setup Bullet Physics (on Linux)
Ubuntu:
apt-get install libbullet-dev
Arch linux:
pacman -S bullet
Setup Bullet Physics (on mingw)
pacman -S mingw-w64-x86_64-bullet
2. Setup GLFWSetup GLFW (on Windows)Setup GLFW (on Mac)
brew install glfw
Setup GLFW (on Linux)
Ubuntu:
apt-get install libglfw3-dev
Arch linux:
pacman -S glfw
Setup GLFW (on mingw)
pacman -S mingw-w64-x86_64-glfw
3. Clone Saba
cd saba
4. Run CMake and buildRun CMake and build (on Windows)
mkdir build
cd build
cmake -G "Visual Studio 14 2015 Win64" ^
    -D SABA_BULLET_ROOT=<Your Bullet Physics install directory> ^
    -D SABA_GLFW_ROOT=<your GLFW install directory> ^
    ..
Open the created sln file in Visual Studio and build it.
"saba_viewer" project is the viewer application.
Run CMake and build (on Mac/Linux)
mkdir build
cd build
cmake ..
make -j4
./saba_viewer
If the operation is heavy, please try the following.
cmake -DCMAKE_BUILD_TYPE=RELEASE ..
make -j4
Run CMake and build (on mingw)
mkdir build
cd build
cmake ..
ninja
./saba_viewer
Initial setting
Initialize with the "init.json" or "init.lua" file placed in the current directory.
Write "init.json" or "init.lua" file in UTF-8.
1. Example "init.json"
{
    "MSAAEnable":        true,
    "MSAACount":        8,
    "Commands":[
        {
            "Cmd":"open",
            "Args":["test.pmx"]
        },
        {
            "Cmd":"open",
            "Args":["test.vmd"]
        }
    ]}
MSAAEnable
Enable MSAA.
MSAACount
Set the number of MSAA samples.
Commands
Set the commands to be executed at startup.
2. Example "init.lua"
MSAA = {
    Enable  = true,
    Count    = 8
}
InitCamera = {
    Center = {x = 0, y = 10, z = 0},
    Eye = {x = 0, y = 10, z = 50},
    NearClip = 1.0,
    FarClip = 2000.0,
    Radius = 100
}
InitScene = {
    UnitScale = 10
}
Commands = {
    {
        Cmd     = "open",
        Args    = {"test.pmx"},
    },
    {
        Cmd     = "open",
        Args    = {"test.vmd"},
    },
    {
        Cmd     = "play"
    },
}
MSAA.Enable
Enable MSAA.
MSAA.Count
Set the number of MSAA samples.
InitCamera.Center
Set camera center position at scene initialization.
InitCamera.Eye
Set camera eye position at scene initialization.
InitCamera.NearClip
Set camera near clip at scene initialization.
InitCamera.FarClip
Set camera far clip at scene initialization.
InitCamera.Radius
Set camera zoom radius at scene initialization.
InitScene.UnitScale
Set grid size at scene initialization.
Commands
Set the commands to be executed at startup.
Run Script
You can run the script.
The command line argument is the "Args" variable.
ModelIndex = 1print(Args[1])
Commands = {
    {
        Cmd     = "open",
        Args    = {Models[ModelIndex]},
    },
    {
        Cmd     = "open",
        Args    = {"test.vmd"},
    },
    {
        Cmd     = "play"
    },
}
How to use
Drag and drop files, or use the "open" command.
MMD
1. Drag and drop model(PMD/PMX) file.
2. Drag and drop motion(VMD) file.
Camera
Drag the mouse to move the camera.
· Left Button (z + Left Button) : Rotate
· Right Button (c + Left Button) : Zoom
· Middle Button (x + Left Button) : Translate
Commandsopen
open <file path>
Open the file.
Supported file types.
· OBJ
· PMD
· PMX
· VMD
The model file will be selected when opened. The model name will be model_xxx(nnn is ID).
select
select <model name>
Select a model.
clear
clear [-all]
Clear a model.
If invoked with no arguments, it clears the selected model.
If -all is specified, all models will be cleared.
play
play
Play the animation.
stop
stop
Stop the animation.
translate
translate x y z
Translate the selected model.
rotate
rotate x y z
Rotate the selected model.
scale
scale x y z
Scale the selected model.
refreshCustomCommand
refreshCustomCommand
Refresh the custom command.
enableUI
enableUI [false]
Switch the display of the UI.
F1 key works the same way.
clearAnimation
clearAnimation [-all]
Clear animation of selected model.
clearSceneAnimation
clearSceneAnimation
Clear animation of scene(eg camera).
Custom command
You can create custom commands using Lua.
When "command.lua" is placed in the current directory and started up, the custom command written in Lua is loaded.
Write "command.lua" with UTF - 8.
For example, you can register a model or animation load as a macro.
function OpenModel(files)
    return function ()
        ExecuteCommand("clear", "-all")
        for i, filename in ipairs(files) do
            ExecuteCommand("open", filename)
        end
    endend
function OpenAnim(files, isPlay)
    return function ()
        ExecuteCommand("clearAnimation", "-all")
        ExecuteCommand("clearSceneAnimation")
        for i, filename in ipairs(files) do
            ExecuteCommand("open", filename)
        end
        if isPlay then
            ExecuteCommand("play")
        end
    endend
-- Register Model Load CommandRegisterCommand("", OpenModel({"Model1_Path"}), "01_Model/Menu1")RegisterCommand("", OpenModel({"Model2_Path"}), "01_Model/Menu2")
-- Register Animation Load Command
anims = {
    "ModelAnim_Path",
    "CameraAnim_Path",
}RegisterCommand("", OpenAnim(anims, true), "02_Anim/Anim1")
Here are functions that can be used in "command.lua".
RegisterCommand
RegisterCommand(commandName, commandFunc, menuName)-- Register command.
-- commandName : Command name-- If it is empty, the command name is set automatically.銆?/span>
-- commandFunc : Command function
-- menuName : Menu name-- This is the name when registering a custom command in the menu.銆?/span>-- If it is empty it will not be added to the menu.-- '/' Separate the menu hierarchy.
ExecuteCommand
ExecuteCommand(command, args)-- Execute the command.
-- command : Execute the command.
--- args : Arguments to pass to the command.--- It is a string or table.
; h5 p' A' Z, E! S
项目官方网站:
https://github.com/benikabocha/saba4 \+ W+ `! ~  P

; r8 p0 a8 l9 `1 Z
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|返回首页

GMT+8, 2024-12-23 23:57 , Processed in 0.080079 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表