{"id":27139847,"url":"https://github.com/noname0310/ue-mmd-camera-importer","last_synced_at":"2025-04-08T04:59:46.709Z","repository":{"id":65809609,"uuid":"588471961","full_name":"noname0310/UE-MMD-Camera-Importer","owner":"noname0310","description":"Unreal Engine plugin for import MMD Camera Animation","archived":false,"fork":false,"pushed_at":"2024-05-21T12:04:22.000Z","size":2649,"stargazers_count":22,"open_issues_count":0,"forks_count":8,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-05-22T13:14:17.376Z","etag":null,"topics":["mmd","unreal-engine-5","unrealengine"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/noname0310.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-13T07:47:56.000Z","updated_at":"2024-05-21T12:01:50.000Z","dependencies_parsed_at":"2024-01-04T06:31:09.701Z","dependency_job_id":"17c2f86e-d0f0-4c00-933c-727a94304576","html_url":"https://github.com/noname0310/UE-MMD-Camera-Importer","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noname0310%2FUE-MMD-Camera-Importer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noname0310%2FUE-MMD-Camera-Importer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noname0310%2FUE-MMD-Camera-Importer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noname0310%2FUE-MMD-Camera-Importer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/noname0310","download_url":"https://codeload.github.com/noname0310/UE-MMD-Camera-Importer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247779691,"owners_count":20994573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mmd","unreal-engine-5","unrealengine"],"created_at":"2025-04-08T04:59:46.183Z","updated_at":"2025-04-08T04:59:46.702Z","avatar_url":"https://github.com/noname0310.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mmd Camera Importer Plugin\n\n## Unreal Engine plugin for import MMD Camera Animation\n\n![Logo](Plugins/MMDCameraImporter/Resources/Icon128.png)\n\n- Tested on Unreal Engine 5.0.3, 5.1.0, 5.1.1, 5.2.0, 5.3.2\n\n## Installation\n\n### [Download Link](https://github.com/noname0310/UE-MMD-Camera-Importer/releases/download/v1.0.5/MMDCameraImporter_v1.0.5.zip)\n\n- If you have never created a C++ project, you must first create a C++ dummy project.\n\n    ![project creation setting](docs/fig13.png)\n\n- If the project is opened, Close the Unreal Editor\n\n- Download the plugin from the link above and extract it into the `{ProjectRoot}/Plugins` folder of the project. If you don't have a folder, create it.\n\n    ![folder structure](docs/fig15.png)\n\n- Once you run the Editor in Debug Mode in Visual Studio, it builds the plugin.\n\n    ![run editor on visualstudio](docs/fig14.png)\n\n## How to use\n\n![after installed](docs/fig7.png)\n\nIf the plugin was installed, a VMD button would appear on the far right side of the sequencer toolbar.\n\nPress the button and select the desired camera motion file.\n\n![import option](docs/fig8.png)\n\nAfter that, the import option will come out. By default, you do not need to touch any settings.\n\nPress Import to bring up camera motion.\n\n![imported](docs/fig9.png)\n\nThe mmd camera is created and the keyframe is loaded.\n\n**In this state, you must open the curve editor and select all tracks once.(due to bug)**\n\n![curve editor](docs/fig10.png)\n\nThe import is finished. Congratulations.\n\n## Why should I use this?\n\nThere are other ways to bring MMD's camera motion to the unreal engine.\n\nBut they lacked some elements, so they were incomplete.\n\n**The issue solved by this importer is the natural transition between camera cuts.**\n\nFor mmd, by default, the cubic interpolation is used to interpolate keyframes, but if two keyframes are closely spaced by one frame, it performs constant interpolation.\n\nSince these characteristics do not exist in other animation systems, it is necessary to apply an algorithm that looks at the distance between keyframes and selects the appropriate interpolation method.\n\n**The problems are described in detail below, and this is also an explanation of the import option.**\n\n### Problem1: Camera cut at 60 frame motion\n\n![60fps camera cut problem](docs/fig1.png)\n\nThis is usually the case when using a blender plugin mmd tools to load camera motion into the unreal engine via fbx.\n\nBecause mmd is a 30 frame animation, rendering in 60 frames results in an oddly interpolated cut between camera cuts.\n\nThis result can be obtained when the `Camera Cut Import Type` is `Import As Is`.\n\n### Problem1(solve method1): Place two keyframes one frame apart\n\n![60fps camera cut problem(solved1)](docs/fig2.png)\n\nOne of the ideal solutions is to place two keyframes one frame apart.\n\nAnd this is done automatically in the Mmd Importer Plugin.\n\nThis result can be obtained when the `Camera Cut Import Type` is `One Frame Interval`.\n\n### Problem1(solve method2): Use constant interpolation\n\n![60fps camera cut problem(solved2)](docs/fig3.png)\n\nThis is a reproduction of the interpolation method performed by a MMD.\n\nHowever, this method has a problem with the camera stopping one frame before the transition is performed.\n\nif you want to get the same results as MMD, it is also good to use this method.\n\nThis result can be obtained when the `Camera Cut Import Type` is `Constant Key`.\n\n### Problem1(solve method3): Use both methods 1 and 2\n\nIf you think a little bit about the constant interpolation of MMD, you can see that it is designed so that there is no problem with the camera cut in any frame over 30 frames.\n\nHowever, method 1 only imports assuming proper behavior at a fixed frame rate.\n\nSo I added a option that combines the two methods.\n\nThis method is good in situations such as games with a dynamic frame rate.\n\nThis result can be obtained when the `Camera Cut Import Type` is `One Frame Interval With Constant Key`.\n\n### Problem2: Motion Blur\n\nThe mmd camera teleports in the camera cut, so a motion blur is instantaneously generated during one frame.\n\n![motion blur problem](docs/fig4.png)\nhttps://www.youtube.com/watch?v=7AG0GKHO7bc\nThis video has the problem.\n\nAs shown in the picture above, there is a problem of creating a bad-looking motion blur.\n\n### Problem2(solve method1): Add Motion Blur Track\n\nSo to solve this problem, I added a function of turning off the motion blur only from the camera cut.\n\n![add motion blur key menu](docs/fig5.png)\n\nThis is the function shown on the import menu.\n\n![motion blur track](docs/fig6.png)\n\nIf you import, this is how motion blur tracks appear on the camera.\n\n### Problem2(solve method2): Use Multiple Cameras\n\nCreate a camera cut by swapping multiple cameras (at least two).\n\n![camera count menu](docs/fig11.png)\n\nIn Import Settings, you can determine the number of cameras. The maximum value is 4.\n\n![camera cut track](docs/fig12.png)\n\nThis picture shows four cameras swapping each other and use splitted camera motion.\n\nThis method provides the cleanest results in Sequencer.\n\n## Knowns Issues\n\n- The curve tangent value is applied after observing the curve with the curve editor. (I think it's a lazy evaluation issue. I'm looking for solution.)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoname0310%2Fue-mmd-camera-importer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoname0310%2Fue-mmd-camera-importer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoname0310%2Fue-mmd-camera-importer/lists"}