02-28-2021, 03:38 AM
04-29-2021, 01:17 AM
EDIT: Already sorted it out. Feel free to check this thread for the solution.
I am not sure if this will get a reply from anyone, but I will say it anyways.
In Marianne's SkinColors text file as an example, there are RGB float values that are to be used in the multiplication of the mask texture (I presume it's the green and black texture) as well as multiplying the skin texture with a set opacity/strength percentage.
The question is, what's the proper way of multiplying the skin color using the green channel of the mask texture into the skin texture?
So far, this is what I have done. This is all done using GIMP.
1. I have basically first split the mask texture into individual channels and isolate the green channel.
2. Then I make and fill an empty layer with the color specified from the text file.
3. After that, I set the blending mode to multiply on the color layer with 100% Opacity I filled and merge down into the green channel.
4. Then, I get the skin texture and I multiply both the skin and the now merged green channel mask texture both with an 83% Opacity.
The end result gives some black splotches in parts of the face when I tested just the face only, which I presume it's from the mask texture.
Previously, I just multiply the merged green channel mask texture with 83% Opacity only in step 4, but it more or less gave me the same result. I am going keep trying other ways to see if I find something, but if anyone knows how to do this properly, please let me know.
I am not sure if this will get a reply from anyone, but I will say it anyways.
In Marianne's SkinColors text file as an example, there are RGB float values that are to be used in the multiplication of the mask texture (I presume it's the green and black texture) as well as multiplying the skin texture with a set opacity/strength percentage.
Code:
RGB of 0 to 1, in an RGB with 0 to 255 this would be decimal multiplied by 255.
This color is multiplied onto the textures with the green channel of the mask texture, as said mask.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Academy: 0.8, 0.64, 0.62
War: 0.8, 0.64, 0.58
The Skin itself is also multiplied at a strength of 83%, so a translucency of 83%
The question is, what's the proper way of multiplying the skin color using the green channel of the mask texture into the skin texture?
So far, this is what I have done. This is all done using GIMP.
1. I have basically first split the mask texture into individual channels and isolate the green channel.
2. Then I make and fill an empty layer with the color specified from the text file.
3. After that, I set the blending mode to multiply on the color layer with 100% Opacity I filled and merge down into the green channel.
4. Then, I get the skin texture and I multiply both the skin and the now merged green channel mask texture both with an 83% Opacity.
The end result gives some black splotches in parts of the face when I tested just the face only, which I presume it's from the mask texture.
Previously, I just multiply the merged green channel mask texture with 83% Opacity only in step 4, but it more or less gave me the same result. I am going keep trying other ways to see if I find something, but if anyone knows how to do this properly, please let me know.
09-10-2021, 04:41 PM
(08-16-2019, 03:51 AM)Jokero Wrote: [ -> ](08-16-2019, 12:22 AM)Demonslayerx8 Wrote: [ -> ](08-15-2019, 02:21 PM)ninetalescommander Wrote: [ -> ]To tell you the truth, I don't know if this process even works for Fire Emblem Warriors let alone Fire Emblem Three Houses. I ain't really bothered with Fire Emblem Warriors as Kuro already did most of the hard work getting those models working so at this point attempting those outside of the models he never did is pointless.
And yeah, hopefully FFSNT is updated to support these models.
Daemon has no intentions of supporting MUA3 or FETH models sadly, I've already asked him twice, and that's why me and Ploaj decided to do research, he did all the coding work, I figured out the NUNO/NUNV structure, still need to figure out the RIGB data tho, as it's related to the physics...
Yeah me and Dimy figured out the format too and are now able to export models with working NUNO/NUNV physics by the intermediate of mesh drivers, just like yours. Semory's source code for the gas machne was a big help to get started but it was still super annoying. Unfortunately our tool only works on TH cause we were only focusing on this game and it doesn't support previous g1m versions cause there are too many and we don't want an universal tool.
The best course of action to have a tool handling everything would be to dive into Semory's source code, update it with the new format versions and then updating the gas machine but as of now we don't have time for that.
Our tool is some kind of a plugin of our private engine so we plan to make it standalone and release it to the public in the next weeks, so people would have a drag and drop tool for TH models just like the NT Tool to get what they want. I'm waiting for Kuro's permission to do so though, sent him a PM for that cause I know he works hard making these models available to the public and I don't want to spoil his work.
Weights and physics will have to be taken care of by the user in the 3D program, we just build the driver mesh and let the user figure out the best way to handle it, just like the NT Tool with the dissidia models.
EDIT: Oh good thing you're doing RIGB, had no clue what it was about. We're going to start diving into g2a which probably contain the animations, as I said this is the thing we're the most interested in.
Hello!
I know that this was posted a long time ago, but I'll give it a try. Any updates on this tool you were describing? It sounds like it would be exactly what I need, and I'd love to be able to use it!
09-10-2021, 05:44 PM
var spector; var captureOnLoad = false; var captureOffScreen = false; window.__SPECTOR_Canvases = []; (function() { var __SPECTOR_Origin_EXTENSION_GetContext = HTMLCanvasElement.prototype.getContext; HTMLCanvasElement.prototype.__SPECTOR_Origin_EXTENSION_GetContext = __SPECTOR_Origin_EXTENSION_GetContext; if (typeof OffscreenCanvas !== 'undefined') { var __SPECTOR_Origin_EXTENSION_OffscreenGetContext = OffscreenCanvas.prototype.getContext; OffscreenCanvas.prototype.__SPECTOR_Origin_EXTENSION_OffscreenGetContext = __SPECTOR_Origin_EXTENSION_OffscreenGetContext; OffscreenCanvas.prototype.getContext = function () { var context = null; if (!arguments.length) { return context; } if (arguments.length === 1) { context = this.__SPECTOR_Origin_EXTENSION_OffscreenGetContext(arguments[0]); if (context === null) { return context; } } else if (arguments.length === 2) { context = this.__SPECTOR_Origin_EXTENSION_OffscreenGetContext(arguments[0], arguments[1]); if (context === null) { return context; } } var contextNames = ["webgl", "experimental-webgl", "webgl2", "experimental-webgl2"]; if (contextNames.indexOf(arguments[0]) !== -1) { // context.canvas.setAttribute("__spector_context_type", arguments[0]); // Notify the page a canvas is available. var myEvent = new CustomEvent("SpectorWebGLCanvasAvailableEvent"); document.dispatchEvent(myEvent); this.id = "Offscreen"; window.__SPECTOR_Canvases.push(this); if (captureOnLoad) { // Ensures canvas is in the dom to capture the one we are currently tracking. if (false) { spector.captureContext(context, 500, false); captureOnLoad = false; } } } return context; } } HTMLCanvasElement.prototype.getContext = function () { var context = null; if (!arguments.length) { return context; } if (arguments.length === 1) { context = this.__SPECTOR_Origin_EXTENSION_GetContext(arguments[0]); if (context === null) { return context; } } else if (arguments.length === 2) { context = this.__SPECTOR_Origin_EXTENSION_GetContext(arguments[0], arguments[1]); if (context === null) { return context; } } var contextNames = ["webgl", "experimental-webgl", "webgl2", "experimental-webgl2"]; if (contextNames.indexOf(arguments[0]) !== -1) { context.canvas.setAttribute("__spector_context_type", arguments[0]); // Notify the page a canvas is available. var myEvent = new CustomEvent("SpectorWebGLCanvasAvailableEvent"); document.dispatchEvent(myEvent); if (captureOffScreen) { var found = false; for (var i = 0; i < window.__SPECTOR_Canvases.length; i++) { if (window.__SPECTOR_Canvases[i] === this) { found = true; break; } } if (!found) { window.__SPECTOR_Canvases.push(this); } } if (captureOnLoad) { // Ensures canvas is in the dom to capture the one we are currently tracking. if (this.parentElement || false) { spector.captureContext(context, 500, false); captureOnLoad = false; } } } return context; } })()
A LOT happened since this post actually, my friend who posted the message you quoted has been too busy irl these days to do any reverse engineering and I basically had to learn everything about REing myself near the end of 2019 instead of relying on him like I used to do, this post makes me a bit nostalgic actually heh
Anyways I made a Noesis plugin that supports Fire Emblem and a lot of other Koei games since then (basically all the ones using g1m as a format). You can find it here, it supports models, textures, rigging and animations : https://forum.xentax.com/viewtopic.php?f=16&t=21666
Just put the dll in the Noesis plugin folder and you'll be able to load and export these g1m/g1t etc files . If you have issues post these on the xentax thread if possible, I very rarely check vg resource forums
(09-10-2021, 04:41 PM)celina Wrote: [ -> ](08-16-2019, 03:51 AM)Jokero Wrote: [ -> ](08-16-2019, 12:22 AM)Demonslayerx8 Wrote: [ -> ]Daemon has no intentions of supporting MUA3 or FETH models sadly, I've already asked him twice, and that's why me and Ploaj decided to do research, he did all the coding work, I figured out the NUNO/NUNV structure, still need to figure out the RIGB data tho, as it's related to the physics...
Yeah me and Dimy figured out the format too and are now able to export models with working NUNO/NUNV physics by the intermediate of mesh drivers, just like yours. Semory's source code for the gas machne was a big help to get started but it was still super annoying. Unfortunately our tool only works on TH cause we were only focusing on this game and it doesn't support previous g1m versions cause there are too many and we don't want an universal tool.
The best course of action to have a tool handling everything would be to dive into Semory's source code, update it with the new format versions and then updating the gas machine but as of now we don't have time for that.
Our tool is some kind of a plugin of our private engine so we plan to make it standalone and release it to the public in the next weeks, so people would have a drag and drop tool for TH models just like the NT Tool to get what they want. I'm waiting for Kuro's permission to do so though, sent him a PM for that cause I know he works hard making these models available to the public and I don't want to spoil his work.
Weights and physics will have to be taken care of by the user in the 3D program, we just build the driver mesh and let the user figure out the best way to handle it, just like the NT Tool with the dissidia models.
EDIT: Oh good thing you're doing RIGB, had no clue what it was about. We're going to start diving into g2a which probably contain the animations, as I said this is the thing we're the most interested in.
Hello!
I know that this was posted a long time ago, but I'll give it a try. Any updates on this tool you were describing? It sounds like it would be exactly what I need, and I'd love to be able to use it!
A LOT happened since this post actually, my friend who posted the message you quoted has been too busy irl these days to do any reverse engineering and I basically had to learn everything about REing myself near the end of 2019 instead of relying on him like I used to do, this post makes me a bit nostalgic actually heh
Anyways I made a Noesis plugin that supports Fire Emblem and a lot of other Koei games since then (basically all the ones using g1m as a format). You can find it here, it supports models, textures, rigging and animations : https://forum.xentax.com/viewtopic.php?f=16&t=21666
Just put the dll in the Noesis plugin folder and you'll be able to load and export these g1m/g1t etc files . If you have issues post these on the xentax thread if possible, I very rarely check vg resource forums
03-29-2022, 05:00 PM
Hi there! So, I've imported the models into Blender, but for some reason the mesh isn't tracking with the bones. Is there any way to fix this? Thanks in advance.
04-02-2022, 02:08 PM
Also, resetting the scale, position, and rotation for the bones doesn't seem to shrink them back into the mesh
05-12-2024, 02:23 PM
(08-10-2019, 06:35 PM)kurokairaku Wrote: [ -> ]I no longer do model exports, but I still try my best to keep my models available for download. I had to move stuff around, as well as make some deletions. This messed up a lot of my past post that relied on images and specific download links.Your Drive Shows that you have deleted the resources can you please share these resources again?
You can find my repository for Fire Emblem 3 Houses here:
https://drive.google.com/drive/folders/1...sp=sharing
Credits to:
SciresM - Made HacTool which gets into the XCI
Ploaj - Made a tool to view and access the models
Big Thanks In Advance. >3