Jump to content
The Dark Mod Forums

MirceaKitsune

Member
  • Posts

    1926
  • Joined

  • Last visited

  • Days Won

    22

Everything posted by MirceaKitsune

  1. It's taken me several months to decide if and how I would discuss this topic. I know from previous experiences that it's a sensitive subject to touch on, yet I have to as I otherwise cannot decide on how to even setup my schedule. I expect a few disgruntled rants to be directed toward me for bringing this up, but I'm hopeful folks can read everything carefully and judge my stance fairly. I'd like to begin by saying that I'm not here to convince people to agree with me. I only ask that you read this with an open mind and try to see things from my perspective as well. I have been a part of the TDM community for 3 years now, and this projects is by far one of my top favorite FOSS games in existence, hence why I wish to make good content for it and push the existing base even further! So let's begin: As many of you may know from random mentions I made in other threads, I'm working on a mod for TheDarkMod which will offer a futuristic cyberpunk theme over the vanilla steampunk setup. It will come as a series of pk4 files, which will run on top of the same code base but feature an entirely unique set of assets and definitions. All of the assets are going to be GPL compatible, similarly to how Xonotic is fully GPL licensed including both the game code and assets. Already I have ported all characters from Xonotic as well as several texture packages as an early experiment. Unfortunately I have barely been able to work on this mod during the past one year since I've started the whole thing. This is primarily because I'm busy working on other projects, consisting of other open-source games as well as 3D animations, which I make as part of my Patreon. Right now I rely exclusively on Patreon to survive, as it's currently me and my mother's only source of income. As such I need to prioritize projects I can present on it, so that those who support me see that I'm working on something and keep me from ending up on the streets. TheDarkMod has always been a complicated situation from this perspective, due the fact that most of its assets are licensed under a non-commercial license (CC-BY-NC-SA) as well as the community having a strong non-commercial culture. A while ago I already asked if it's okay to develop missions as part of a Patreon, and have gotten a solid "no" for an answer... despite the question referring strictly to original maps and not in way involving the redistribution of any vanilla assets. As creating fan missions is not such an endeavor that I absolutely need to put them on Patreon, I'm respecting that wish to this day, and continuing to work on fan missions without making any paid posts nor requesting any support on their behalf. With a mod of this proportions however, the situation is a lot more difficult. As such I'm constrained to consider whether a common ground can be found between the non-commercial culture of TDM, and my need to be able to use Patreon to some extent in order to create this project; I really want to make it happen and share with you something I've dreamed of creating for years now, while I explicitly wish to use TDM as a basis since its engine and gamecode are perfect for this... however I can't do it with my hands completely tied behind my back in being able to receive donations for my own original work! The technical details are finicky: My mod is obviously comprised entirely of assets taken from other free sources, such as Xonotic or BlendSwap or OpenGameArt. Not a single asset that will be included with it is non-commercial, since like I said the mod's assets will be strictly GPL compatible (including CC0 / Public Domain and CC-BY). The idTech 4 engine as well as the original game code of TheDarkMod are themselves GPL licensed, which offers a nice fit and should ideally close the chain in packaging a fully non-proprietary project. So what is the problem? Well at least for a long time, my mod will rely on existing assets from TDM for functionality. None of those assets will ever be redistributed with it, nor are TDM's original assets part of the end goal to begin with... however the mod's original definitions will have to inherit them until replacements can be found for each and every one. This primarily affects entity definitions, character animations, character voices, and potentially a few other things... my mod needs to link to those so that its own original characters can move around and speak. Some people seem to consider that if you create your own character or use a freely licensed one, however that character inherits base character definitions / animations / voices from TDM at runtime, using the character you've created in a commercial fashion counts as breaching the non-commercial terms of the assets bundled with TDM... despite none of TDM's assets actually being included with it and only being referenced by a simple word in your own definition. It's this misunderstanding that I'm hoping can be cleared up. For clarification: My mod is and always will be publicly available, and is already being hosted on Gitlab where people can try the early items I've finished implementing. It will never be sold nor ever hidden behind a paywall! When I say "using Patreon for my mod", I'm strictly referring to being allowed to make special announcements about it to Patrons of certain tiers, and at most offer sneak previews of what I'm working on to exclusive patrons. It's as simple as that... just announcements and occasional exclusive content, so people know they're also keeping me going so I can work on creating this! It's arguable whether I'm even getting close to doing anything that counts as "using TheDarkMod's assets commercially", as this could only be the case through an arguable chain of causality... yet I know some people care for this sort of thing, and as such I have do discuss it and see how far I can go. In the end I will have to settle for one of 3 options in how I approach the problem. My possibilities right now are the following: I am not allowed to even talk about my works for TheDarkMod on Patreon, to the point where I can't even let my followers know what I'm working on and what progress I have made. As Patreon is also used as a blog (similarly to Tumblr, Livejournal, so on) this would include me having to self-censor on the website over the very subject of TDM. This is a rather silly worst case scenario, and unless the TDM community actively hates me I won't be asked to go this far... it would also keep this mod nearly impossible to develop. I am allowed to talk about my works for TheDarkMod on Patreon, but only in free posts and not as an exclusive means of trying to attract new supporters. Basically I'm telling my patrons "I am also working on this project that I'm sharing with the world", while making it clear that it's a free project and I'm not asking them to pay me for it although I am asking them to bare with me dedicating less time to other projects they do pay me for. This option seems very reasonable, and I'm hoping there are no issues in me settling for it as a worst case scenario. I am allowed to talk about my works for TheDarkMod on Patreon, as well as offer early sneak peaks or bits of exclusive content (eg: screenshots or unlisted Youtube videos). This is what I do for all my projects, and it allows me to make them a focus without making the project less free or accessible. It's the ideal option, however if the community has a strong opinion against me doing this I can refrain from it... this would however allow me to dedicate much more time to the mod.Please let me know which of these approaches you'd be most comfortable with me choosing. Like I said, I understand and respect the feelings of the community toward commercial use, but at the same time I ask that you see things from my perspective too and judge fairly before answering; This isn't me trying to be an ass for no reason and expand my Patreon through TDM... heck I've modded so many projects that I have an abundance to pick from if need be. It's about me wanting to create a large and unique project that runs on top of base TDM, which I've dreamed of making for many years and am also certain the TDM community will greatly enjoy once it gets there. I only ask not to be limited more than I need to be, in order to make it easier for me to make this project happen for everyone. Thank you for reading this and offering your insight.
  2. Was going to keep this a surprise, but I'm in the process of putting together a soundtrack from OGA myself. Might be the next thing I announce about my version of the mod... I'm also working on new weapon models.
  3. As far as my cyberpunk conversion goes, I believe I can handle most of the basics. Mainly since I'm using existing freely licensed stuff, not creating new assets on my own as much... it's all about finding an easy way to convert and adapt stuff, ideally automating as much of it as possible. I've already ported all of the Xonotic characters to TheDarkMod, as well as two texture packages. The existing animations work fine for humans, at least for now till we get around to making new ones... they will be using the same rig in any case, for compatibility with both old and new anims. Once I get enough done to prove the potential of the idea, I'm hopeful more developers will join in. As far as MakeHuman goes, I realize that fully exporting to md5mesh might be too much to hope for. I do however at least hope for a MakeHuman version of the TDM rig, so that I don't have to arrange every bone for each character in Blender. That part is a lot more doable, as MH joint templates can be defined in a way that lets them scale with the property settings of the character. I'm curious if anyone might be willing to look into that... if not I might myself eventually, but I really don't know how this works and if I have the tools to do it.
  4. A seam between the head and body would actually not be visible either way; Since no one's likely to be exporting naked humans for TDM, the head mesh can be separated behind the clothing. Makehuman offers an option to hide faces on the body mesh when exporting with cloth models, which we would obviously be using for optimal polygon count. A separate head entity is the most ideal setup though; It offers way more customization options than a whole mesh. I'm actually thinking of creating bodies and heads separately, though I'll probably export full characters and just leave them swappable between bodies that make sense (same gender / skin color / class).
  5. Ah... that's true as well, forgot that part. One of the models I made has the head connecting seamlessly to the body (mesh wise), but of course the head had to be exported as its own model and entity... thankfully I got it to sit almost seamlessly in-game (unless you zoom in and look very close where you can notice a tiny seam). The obvious solution would be for the script to put the body and head on their own md5mesh each, and hopefully calculate the head origin offset needed to achieve minimal gap.
  6. Ah yes, that section would have been better... too late to move the thread now though. Anyway I managed to find a supposed md5 exporter for MakeHuman on Github. I haven't tested it so no idea if it still works with the latest version of the program. Someone would also need to patch it so that it generates the low-poly shadow mesh we're using, otherwise you still have to edit the output in Blender which defeats the purpose. On the bright side, the code is rather short and simple! https://github.com/duststorm/makehuman/blob/master/trunk/makehuman/apps/mh2/mh2md5.py #!/usr/bin/python # -*- coding: utf-8 -*- """ Export to id Software's MD5 format. **Project Name:** MakeHuman **Product Home Page:** http://www.makehuman.org/ **Code Home Page:** http://code.google.com/p/makehuman/ **Authors:** Marc Flerackers **Copyright(c):** MakeHuman Team 2001-2013 **Licensing:** AGPL3 (see also http://www.makehuman.org/node/318) **Coding Standards:** See http://www.makehuman.org/node/165 Abstract -------- This module implements a plugin to export MakeHuman mesh and skeleton data to id Software's MD5 format. See http://www.modwiki.net/wiki/MD5MESH_(file_format) for information on the format. Requires: - base modules """ __docformat__ = 'restructuredtext' from os.path import basename from skeleton import Skeleton groupWeights = ( ('head-back-skull', 'joint-head', 1.0), ('head-brow', 'joint-head', 1.0), ('head-tongue', 'joint-head', 1.0), ('head-upper-skull', 'joint-head', 1.0), ('hip-navel', 'joint-spine2', 1.0), ('inner-mouth', 'joint-mouth', 1.0), ('jaw-chin', 'joint-head', 1.0), ('jaw-lower-chin', 'joint-head', 1.0), ('l-ear-helix', 'joint-head', 1.0), ('l-ear-inner', 'joint-head', 1.0), ('l-ear-lobe', 'joint-head', 1.0), ('l-ear-tubercle', 'joint-head', 1.0), ('l-eye-ball', 'joint-l-eye', 1.0), ('l-eye-inner-brow-ridge', 'joint-head', 1.0), ('l-eye-lower-inner-lid', 'joint-head', 1.0), ('l-eye-lower-middle-lid', 'joint-head', 1.0), ('l-eye-lower-middle-orbital', 'joint-head', 1.0), ('l-eye-lower-outer-lid', 'joint-head', 1.0), ('l-eye-lower-outer-orbital', 'joint-head', 1.0), ('l-eye-middle-brow-ridge', 'joint-head', 1.0), ('l-eye-outer-brow-ridge', 'joint-head', 1.0), ('l-eye-upper-inner-lid', 'joint-head', 1.0), ('l-eye-upper-inner-orbital', 'joint-head', 1.0), ('l-eye-upper-middle-lid', 'joint-head', 1.0), ('l-eye-upper-middle-orbital', 'joint-head', 1.0), ('l-eye-upper-outer-lid', 'joint-head', 1.0), ('l-eye-upper-outer-orbital', 'joint-head', 1.0), ('l-foot-ankle', 'joint-l-ankle', 1.0), ('l-foot-core', 'joint-l-ankle', 1.0), ('l-foot-heel', 'joint-l-ankle', 1.0), ('l-foot-nail1', 'joint-l-toe-1-2', 1.0), ('l-foot-nail2', 'joint-l-toe-2-3', 1.0), ('l-foot-nail3', 'joint-l-toe-3-3', 1.0), ('l-foot-nail4', 'joint-l-toe-4-3', 1.0), ('l-foot-nail5', 'joint-l-toe-5-3', 1.0), ('l-foot-toe-1-1', 'joint-l-toe-1-1', 1.0), ('l-foot-toe-1-2', 'joint-l-toe-1-2', 1.0), ('l-foot-toe-2-1', 'joint-l-toe-2-1', 1.0), ('l-foot-toe-2-2', 'joint-l-toe-2-2', 1.0), ('l-foot-toe-2-3', 'joint-l-toe-2-3', 1.0), ('l-foot-toe-3-1', 'joint-l-toe-3-1', 1.0), ('l-foot-toe-3-2', 'joint-l-toe-3-2', 1.0), ('l-foot-toe-3-3', 'joint-l-toe-3-3', 1.0), ('l-foot-toe-4-1', 'joint-l-toe-4-1', 1.0), ('l-foot-toe-4-2', 'joint-l-toe-4-2', 1.0), ('l-foot-toe-4-3', 'joint-l-toe-4-3', 1.0), ('l-foot-toe-5-1', 'joint-l-toe-5-1', 1.0), ('l-foot-toe-5-2', 'joint-l-toe-5-2', 1.0), ('l-foot-toe-5-3', 'joint-l-toe-5-3', 1.0), ('l-hand-finger-1-1', 'joint-l-finger-1-1', 1.0), ('l-hand-finger-1-2', 'joint-l-finger-1-2', 1.0), ('l-hand-finger-1-3', 'joint-l-finger-1-3', 1.0), ('l-hand-finger-2-1', 'joint-l-finger-2-1', 1.0), ('l-hand-finger-2-2', 'joint-l-finger-2-2', 1.0), ('l-hand-finger-2-3', 'joint-l-finger-2-3', 1.0), ('l-hand-finger-3-1', 'joint-l-finger-3-1', 1.0), ('l-hand-finger-3-2', 'joint-l-finger-3-2', 1.0), ('l-hand-finger-3-3', 'joint-l-finger-3-3', 1.0), ('l-hand-finger-4-1', 'joint-l-finger-4-1', 1.0), ('l-hand-finger-4-2', 'joint-l-finger-4-2', 1.0), ('l-hand-finger-4-3', 'joint-l-finger-4-3', 1.0), ('l-hand-finger-5-1', 'joint-l-finger-5-1', 1.0), ('l-hand-finger-5-2', 'joint-l-finger-5-2', 1.0), ('l-hand-finger-5-3', 'joint-l-finger-5-3', 1.0), ('l-hand-nail1', 'joint-l-finger-1-3', 1.0), ('l-hand-nail2', 'joint-l-finger-2-3', 1.0), ('l-hand-nail3', 'joint-l-finger-3-3', 1.0), ('l-hand-nail4', 'joint-l-finger-4-3', 1.0), ('l-hand-nail5', 'joint-l-finger-5-3', 1.0), ('l-hand-palm', 'joint-r-hand', 1.0), ('l-head-cheek', 'joint-head', 1.0), ('l-head-cheek-arc', 'joint-head', 1.0), ('l-head-lower-inner-orbital', 'joint-head', 1.0), ('l-head-maxilla', 'joint-head', 1.0), ('l-head-outer-chin', 'joint-head', 1.0), ('l-head-temple', 'joint-head', 1.0), ('l-head-zygoma', 'joint-head', 1.0), ('l-hip', '', 1.0), ('l-hip-lower-abdomen', '', 1.0), ('l-hip-middle-abdomen', '', 1.0), ('l-hip-upper-abdomen', '', 1.0), ('l-jaw', 'joint-head', 1.0), ('l-lowerarm', 'joint-l-elbow', 1.0), ('l-lowerleg', 'joint-l-knee', 1.0), ('l-lowerleg-calf', 'joint-l-knee', 1.0), ('l-mouth-lower', 'joint-mouth', 1.0), ('l-mouth-lower-lip', 'joint-mouth', 1.0), ('l-mouth-upper-lip', 'joint-mouth', 1.0), ('l-nose-nostril', 'joint-head', 1.0), ('l-pelvis-gluteus', '', 1.0), ('l-teeth-low-cent-incisor', 'joint-head', 1.0), ('l-teeth-low-cuspid', 'joint-head', 1.0), ('l-teeth-low-first-bicuspid', 'joint-head', 1.0), ('l-teeth-low-first-molar', 'joint-head', 1.0), ('l-teeth-low-lat-incisor', 'joint-head', 1.0), ('l-teeth-low-sec-bicuspid', 'joint-head', 1.0), ('l-teeth-low-sec-molar', 'joint-head', 1.0), ('l-teeth-low-third-molar', 'joint-head', 1.0), ('l-teeth-up-cent-incisor', 'joint-head', 1.0), ('l-teeth-up-cuspid', 'joint-head', 1.0), ('l-teeth-up-first-bicuspid', 'joint-head', 1.0), ('l-teeth-up-first-molar', 'joint-head', 1.0), ('l-teeth-up-lat-incisor', 'joint-head', 1.0), ('l-teeth-up-sec-bicuspid', 'joint-head', 1.0), ('l-teeth-up-sec-molar', 'joint-head', 1.0), ('l-teeth-up-third-molar', 'joint-head', 1.0), ('l-torso-axilla', '', 1.0), ('l-torso-back-scapula', '', 1.0), ('l-torso-back-shoulder', '', 1.0), ('l-torso-clavicle', '', 1.0), ('l-torso-front-shoulder', '', 1.0), ('l-torso-inner-pectoralis', '', 1.0), ('l-torso-lower-back', '', 1.0), ('l-torso-lower-pectoralis', '', 1.0), ('l-torso-middle-pectoralis', '', 1.0), ('l-torso-nipple', '', 1.0), ('l-torso-outer-pectoralis', '', 1.0), ('l-torso-ribs', '', 1.0), ('l-torso-trapezius', '', 1.0), ('l-torso-upper-middle-back', '', 1.0), ('l-torso-upper-pectoralis', '', 1.0), ('l-torso-upper-shoulder', '', 1.0), ('l-upperarm-biceps', 'joint-l-shoulder', 1.0), ('l-upperarm-triceps', 'joint-l-shoulder', 1.0), ('l-upperleg-frontal-thigh', 'joint-l-upper-leg', 1.0), ('l-upperleg-knee', 'joint-l-upper-leg', 1.0), ('l-upperleg-thigh-back', 'joint-l-upper-leg', 1.0), ('mouth-lower-middle-lip', 'joint-mouth', 1.0), ('mouth-upper-middle-lip', 'joint-mouth', 1.0), ('neck', 'joint-neck', 1.0), ('neck-adam-apple', 'joint-neck', 1.0), ('neck-upper', 'joint-neck', 1.0), ('nose-bridge', 'joint-head', 1.0), ('nose-glabella', 'joint-head', 1.0), ('nose-philtrum', 'joint-head', 1.0), ('nose-sellion', 'joint-head', 1.0), ('nose-tip', 'joint-head', 1.0), ('pelvis-genital-area', '', 1.0), ('r-ear-helix', 'joint-head', 1.0), ('r-ear-inner', 'joint-head', 1.0), ('r-ear-lobe', 'joint-head', 1.0), ('r-ear-tubercle', 'joint-head', 1.0), ('r-eye-ball', 'joint-head', 1.0), ('r-eye-inner-brow-ridge', 'joint-head', 1.0), ('r-eye-lower-inner-lid', 'joint-head', 1.0), ('r-eye-lower-middle-lid', 'joint-head', 1.0), ('r-eye-lower-middle-orbital', 'joint-head', 1.0), ('r-eye-lower-outer-lid', 'joint-head', 1.0), ('r-eye-lower-outer-orbital', 'joint-head', 1.0), ('r-eye-middle-brow-ridge', 'joint-head', 1.0), ('r-eye-outer-brow-ridge', 'joint-head', 1.0), ('r-eye-upper-inner-lid', 'joint-head', 1.0), ('r-eye-upper-inner-orbital', 'joint-head', 1.0), ('r-eye-upper-middle-lid', 'joint-head', 1.0), ('r-eye-upper-middle-orbital', 'joint-head', 1.0), ('r-eye-upper-outer-lid', 'joint-head', 1.0), ('r-eye-upper-outer-orbital', 'joint-head', 1.0), ('r-foot-ankle', 'joint-r-ankle', 1.0), ('r-foot-core', 'joint-r-ankle', 1.0), ('r-foot-heel', 'joint-r-ankle', 1.0), ('r-foot-nail1', 'joint-r-toe-1-2', 1.0), ('r-foot-nail2', 'joint-r-toe-2-3', 1.0), ('r-foot-nail3', 'joint-r-toe-3-3', 1.0), ('r-foot-nail4', 'joint-r-toe-4-3', 1.0), ('r-foot-nail5', 'joint-r-toe-5-3', 1.0), ('r-foot-toe-1-1', 'joint-r-toe-1-1', 1.0), ('r-foot-toe-1-2', 'joint-r-toe-1-2', 1.0), ('r-foot-toe-2-1', 'joint-r-toe-2-1', 1.0), ('r-foot-toe-2-2', 'joint-r-toe-2-2', 1.0), ('r-foot-toe-2-3', 'joint-r-toe-2-3', 1.0), ('r-foot-toe-3-1', 'joint-r-toe-3-1', 1.0), ('r-foot-toe-3-2', 'joint-r-toe-3-2', 1.0), ('r-foot-toe-3-3', 'joint-r-toe-3-3', 1.0), ('r-foot-toe-4-1', 'joint-r-toe-4-1', 1.0), ('r-foot-toe-4-2', 'joint-r-toe-4-2', 1.0), ('r-foot-toe-4-3', 'joint-r-toe-4-3', 1.0), ('r-foot-toe-5-1', 'joint-r-toe-5-1', 1.0), ('r-foot-toe-5-2', 'joint-r-toe-5-2', 1.0), ('r-foot-toe-5-3', 'joint-r-toe-5-3', 1.0), ('r-hand-finger-1-1', 'joint-r-finger-1-1', 1.0), ('r-hand-finger-1-2', 'joint-r-finger-1-2', 1.0), ('r-hand-finger-1-3', 'joint-r-finger-1-3', 1.0), ('r-hand-finger-2-1', 'joint-r-finger-2-1', 1.0), ('r-hand-finger-2-2', 'joint-r-finger-2-2', 1.0), ('r-hand-finger-2-3', 'joint-r-finger-2-3', 1.0), ('r-hand-finger-3-1', 'joint-r-finger-3-1', 1.0), ('r-hand-finger-3-2', 'joint-r-finger-3-2', 1.0), ('r-hand-finger-3-3', 'joint-r-finger-3-3', 1.0), ('r-hand-finger-4-1', 'joint-r-finger-4-1', 1.0), ('r-hand-finger-4-2', 'joint-r-finger-4-2', 1.0), ('r-hand-finger-4-3', 'joint-r-finger-4-3', 1.0), ('r-hand-finger-5-1', 'joint-r-finger-5-1', 1.0), ('r-hand-finger-5-2', 'joint-r-finger-5-2', 1.0), ('r-hand-finger-5-3', 'joint-r-finger-5-3', 1.0), ('r-hand-nail1', 'joint-r-finger-1-3', 1.0), ('r-hand-nail2', 'joint-r-finger-2-3', 1.0), ('r-hand-nail3', 'joint-r-finger-3-3', 1.0), ('r-hand-nail4', 'joint-r-finger-4-3', 1.0), ('r-hand-nail5', 'joint-r-finger-5-3', 1.0), ('r-hand-palm', 'joint-r-hand', 1.0), ('r-head-cheek', 'joint-head', 1.0), ('r-head-cheek-arc', 'joint-head', 1.0), ('r-head-lower-inner-orbital', '', 1.0), ('r-head-maxilla', 'joint-head', 1.0), ('r-head-outer-chin', 'joint-head', 1.0), ('r-head-temple', 'joint-head', 1.0), ('r-head-zygoma', 'joint-head', 1.0), ('r-hip', '', 1.0), ('r-hip-lower-abdomen', '', 1.0), ('r-hip-middle-abdomen', '', 1.0), ('r-hip-upper-abdomen', '', 1.0), ('r-jaw', 'joint-head', 1.0), ('r-lowerarm', 'joint-r-elbow', 1.0), ('r-lowerleg', 'joint-l-knee', 1.0), ('r-lowerleg-calf', 'joint-l-knee', 1.0), ('r-mouth-lower', 'joint-mouth', 1.0), ('r-mouth-lower-lip', 'joint-mouth', 1.0), ('r-mouth-upper-lip', 'joint-mouth', 1.0), ('r-nose-nostril', 'joint-head', 1.0), ('r-pelvis-gluteus', '', 1.0), ('r-teeth-low-cent-incisor', 'joint-head', 1.0), ('r-teeth-low-cuspid', 'joint-head', 1.0), ('r-teeth-low-first-bicuspid', 'joint-head', 1.0), ('r-teeth-low-first-molar', 'joint-head', 1.0), ('r-teeth-low-lat-incisor', 'joint-head', 1.0), ('r-teeth-low-sec-bicuspid', 'joint-head', 1.0), ('r-teeth-low-sec-molar', 'joint-head', 1.0), ('r-teeth-low-third-molar', 'joint-head', 1.0), ('r-teeth-up-cent-incisor', 'joint-head', 1.0), ('r-teeth-up-cuspid', 'joint-head', 1.0), ('r-teeth-up-first-bicuspid', 'joint-head', 1.0), ('r-teeth-up-first-molar', 'joint-head', 1.0), ('r-teeth-up-lat-incisor', 'joint-head', 1.0), ('r-teeth-up-sec-bicuspid', 'joint-head', 1.0), ('r-teeth-up-sec-molar', 'joint-head', 1.0), ('r-teeth-up-third-molar', 'joint-head', 1.0), ('r-torso-axilla', '', 1.0), ('r-torso-back-scapula', '', 1.0), ('r-torso-back-shoulder', '', 1.0), ('r-torso-clavicle', '', 1.0), ('r-torso-front-shoulder', '', 1.0), ('r-torso-inner-pectoralis', '', 1.0), ('r-torso-lower-back', '', 1.0), ('r-torso-lower-pectoralis', '', 1.0), ('r-torso-middle-pectoralis', '', 1.0), ('r-torso-nipple', '', 1.0), ('r-torso-outer-pectoralis', '', 1.0), ('r-torso-ribs', '', 1.0), ('r-torso-trapezius', '', 1.0), ('r-torso-upper-middle-back', '', 1.0), ('r-torso-upper-pectoralis', '', 1.0), ('r-torso-upper-shoulder', '', 1.0), ('r-upperarm-biceps', 'joint-r-shoulder', 1.0), ('r-upperarm-triceps', 'joint-r-shoulder', 1.0), ('r-upperleg-frontal-thigh', 'joint-l-upper-leg', 1.0), ('r-upperleg-knee', 'joint-l-upper-leg', 1.0), ('r-upperleg-thigh-back', 'joint-l-upper-leg', 1.0), ('torso-spine', '', 1.0), ('l-eye-cornea', 'joint-head', 1.0), ('r-eye-cornea', 'joint-head', 1.0), ('r-eye-eyebrown', 'joint-head', 1.0), ('l-eye-eyebrown', 'joint-head', 1.0), ('l-eye-lower-lash', 'joint-head', 1.0), ('l-eye-upper-lash', 'joint-head', 1.0), ('r-eye-lower-lash', 'joint-head', 1.0), ('r-eye-upper-lash', 'joint-head', 1.0)) def exportMd5(obj, filename): """ This function exports MakeHuman mesh and skeleton data to id Software's MD5 format. Parameters ---------- obj: *Object3D*. The object whose information is to be used for the export. filename: *string*. The filename of the file to export the object to. """ skeleton = Skeleton() skeleton.update(obj) f = open(filename, 'w') f.write('MD5Version 10\n') f.write('commandline ""\n\n') f.write('numJoints %d\n' % (skeleton.joints+1)) # Amount of joints + the hardcoded origin below f.write('numMeshes %d\n\n' % (1)) # TODO: 2 in case of hair f.write('joints {\n') f.write('\t"%s" %d ( %f %f %f ) ( %f %f %f )\n' % ('origin', -1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)) writeJoint(f, skeleton.root) f.write('}\n\n') f.write('mesh {\n') f.write('\tshader "%s"\n' % (basename(obj.texture))) # TODO: create the shader file f.write('\n\tnumverts %d\n' % (len(obj.verts))) for vert in obj.verts: if obj.has_uv: face = vert.sharedFaces[0] u, v = obj.texco[face.uv[face.verts.index(vert)]] else: u, v = 0, 0 # vert [vertIndex] ( [texU] [texV] ) [weightIndex] [weightElem] f.write('\tvert %d ( %f %f ) %d %d\n' % (vert.idx, u, 1.0-v, vert.idx, 1)) f.write('\n\tnumtris %d\n' % (len(obj.faces) * 2)) for face in obj.faces: # tri [triIndex] [vertIndex1] [vertIndex2] [vertIndex3] f.write('\ttri %d %d %d %d\n' % (face.idx*2, face.verts[2].idx, face.verts[1].idx, face.verts[0].idx)) f.write('\ttri %d %d %d %d\n' % (face.idx*2+1, face.verts[0].idx, face.verts[3].idx, face.verts[2].idx)) f.write('\n\tnumweights %d\n' % (len(obj.verts))) for vert in obj.verts: # TODO: We attach all vertices to the root with weight 1.0, this should become # real weights to the correct bones # weight [weightIndex] [jointIndex] [weightValue] ( [xPos] [yPos] [zPos] ) f.write('\tweight %d %d %f ( %f %f %f )\n' % (vert.idx, 0, 1.0, vert.co[0], -vert.co[2], vert.co[1])) f.write('}\n\n') f.close() def writeJoint(f, joint): """ This function writes out information describing one joint in MD5 format. Parameters ---------- f: *file handle*. The handle of the file being written to. joint: *Joint object*. The joint object to be processed by this function call. ident: *integer*. The joint identifier. """ if joint.parent: parentIndex = joint.parent.index else: parentIndex = 0 # "[boneName]" [parentIndex] ( [xPos] [yPos] [zPos] ) ( [xOrient] [yOrient] [zOrient] ) f.write('\t"%s" %d ( %f %f %f ) ( %f %f %f )\n' % (joint.name, parentIndex, joint.position[0], joint.position[1], joint.position[2], joint.direction[0], joint.direction[1], joint.direction[2])) for joint in joint.children: writeJoint(f, joint)
  7. I'll start with some background on what brought up this idea; As some users may know, I've been working on a large mod for TDM, which aims to introduce cyberpunk assets for futuristic worlds... it's called The Dark Module and is currently being discussed in this thread. One of the many types of assets I'll need in order to complete this project are new player models; I've already ported the character set from Xonotic, but will be needing more models in order to create civilians. I've thought of the most efficient way to achieve this: MakeHuman! For those who haven't heard of it, MakeHuman is a tool that can be used to easily create human characters; You choose from a selection of geometries / materials / rigs, adjust several parameters defining the shape and size of your character, then export to one of many formats. Its default assets are also licensed under CC0 / Public Domain. http://www.makehuman.org So why I am bringing this up here? Well I've already used Makehuman to create characters for Blender animations. Likewise I've also exported many characters from Blender to TheDarkMod so far, and know how the skeleton and mesh need to be defined. The problem is that setting up a TDM character in Blender is very time consuming, especially the rigging part... Makehuman on the other hand can automate the process if given the right data to work with; You may create plugins for custom rigs, as well as custom exporters for a multitude of formats! Since I'll want to create a lot of civilian characters for my mod, I could definitely use the convenience of having MakeHuman export the final md5mesh instead of me having to go through Blender with each one. What I'm basically looking for is two things: A md5 exporter for MakeHuman. It needs to be capable of exporting to md5mesh format, have proper material definitions, as well as generate the low-poly shadow mesh. A custom rig compatible with TheDarkMod's animations. The rig simply needs to contain the bones and vertex weights used by TDM so the model animates properly out-of-the-box.Apparently there were people working on such, however I can't find anything up to date let alone a download. I was only able to find this video as far as an exporter goes: If both of those things can be made, it would be a huge advantage for many mod and mission creators; People will have the ability to create custom characters for TDM in a matter of minutes, something that normally takes days to do! However I have zero idea how to build a md5 exporter, and also don't know if I can use Blender to create a custom MakeHuman rig preset. Would anyone be willing to help at least on a MakeHuman rig for the TDM joints?
  8. For my fork I'm porting the Xonotic assets to TDM, which are GPL licensed... other than that I can find everything I need in places like BlendSwap and OpenGameArt. Finding freely licensed assets isn't a problem, adjusting and porting them is. The only exception are new character animations and voice packages, but those can come later and are not an emergency at this stage. The next big priority will be weapons and items.
  9. Obligatory reminder #1: I'm still waiting to get back to my own version of the fork! Again I apologize for dropping it shortly after posting the new textures and player models; I've been very busy working on other projects... all of which are part of my Patreon, something I can't do with TDM due to its non-commercial nature thus I cannot prioritize this mod (till it's free of proprietary asset reliance). Obligatory reminder #2: If you want to see me progress, I need help and information from other developers experienced with TDM, on understanding how to define a custom weapon. I require your aid on two aspects; The first is a clean weapon + projectile definition example, the second is a guide on how the 1st person view model (with animated hands) needs to be configured in Blender and exported to md5mesh / md5anim. My plan is to have classic types of guns (pistol, shotgun, machine gun, sniper, link gun, etc) with the ammo types and functionalities of TDM arrows (fire, water, moss, etc), the key binds representing either the projectile type or the weapon type.
  10. It's still on my list to make a HUD of my own for the mod. Again I apologize for how long it's taken me to get around to this, as I am busy with other projects and will also be away for a bit next month.
  11. My version plans to replace all assets, so yes. I can likely find something that works on OpenGameArt or similar.
  12. Unfortunately I haven't played that game, so can't really say. However the mod will aim to allow for a variety of genres and styles, so I'm sure no possibility will be left out
  13. Thank you, I'm glad that you like them. Still thinking of how to do weapons, and I will especially need an example of doing the definitions and the md5mesh and md5anim models of each gun.
  14. Full-screen GUI is unrealistic, so I'd like to keep it for as little as possible. I do intent to have the player read emails on touchscreen displays in the world, as that's the most immersive option. Perhaps there can be both a touchscreen and a GUI, and the player can decide which to use via a cvar and menu setting? Also I wasn't aware of the merge requests, Gitlab doesn't seem to notify me by email. I'd rather you asked before making these... which is okay, just that I might have to remix and add them manually instead.
  15. For clarity: I don't want computers to use a GUI menu. I want them to work strictly via interactive surfaces, like the ones Doom3 had! I don't remember if that also let you type usernames and passwords on the screen, nor if cameras can work with that system... might be in a bit of trouble if not.
  16. Nice, nice, so very nice! I'm sorry for getting sidetracked again: Once more I'm working on several game projects alongside TDM... many for Patreon, where I can't do paid stuff for TDM due to its non-commercial license, meaning I have to focus on it when I find free time throughout my other works. I need to see how these HUD definitions work, then attempt to make my own design. I plan to make mine more inspired by that of latest Prey or DeusEx games. Reminder: The thing I will need help with soon which I don't know how to do at all, is explanations and examples of how to create new weapons! This not only includes doing the definitions, but also how I must create and export custom hands with custom guns from Blender, as I'll need to make my own md5mesh / md5anim sets for the guns. Further more, I will want to do stuff like upgradable weapons and size-limited customizable inventories... I'm not even sure how much I can push the TDM code to allow this, but I guess I'll have to see when I get there. I need not mention interactive screens too, where you can access password protected computers and read emails or see streams from cameras. Any examples would be highly welcome.
  17. Wow... I did not expect my thread to inspire anyone to do any engine changes so quickly. That's awesome to hear, thank you duzenko! Can you post any screenshots please?
  18. Note that in my version of the HUD, the lightgem will be moved and simplified. Other than that yes: It's just a total conversion, introducing new assets as well as many new features, but keeping every basic in TDM.
  19. True there. Multiple CPU threads were experimental technology in the days of Doom 3, so it's easy to tell why multi-threading never made it. GLSL was also more limited I believe... I'm not sure if OpenGL 3.3 was even a standard at the time! These are all things which ideally, can be changed in the engine... but obviously I don't underestimate the amount of work that would take. What I'm saying is that regardless of the very under-the-hood limitations, the infrastructure and layout of the engine is unusually modern to this day! That's referring to how flexibly entities can be defined and interconnected, how modular md5mesh / md5anim models are, the shader system which is capable of visual effects many modern engines still didn't add (like heat haze), the ingenious area portal system, and let's not forget that interactive touchscreens are a part of the engine (even if TDM sadly never made steampunk variants), also it comes with a fully functioning physics system plus ragdolls (which work just as well as Bullet / ODE). There are modern FOSS engines which struggle to implement all of these things or better equivalents. Some open-source games that look really good only have basic physics (no objects pushing each other or rolling around), just the most standard shaders, every single entity and functionality is hardcoded and must be compiled by hand, geometry culling relies solely on surface hiding (no smart area portals), and interactive screens are a dream.
  20. I don't underestimate the idTech4 engine, although I'm seeing a lot of people who are. For an engine that was developed 10 years ago, the features and flexibility and ingenuity it offers are remarkable! The community made some amazing engines based on itTech 1 to 3... imagine what we could do with a heavily modernized version of 4, we'd be competing with Unreal and Unity! Sadly the engine does have a lot of aged components, as it uses the cutting edge technology that was available back in 2005 (ish), which is the reason why improvements like this are important.
  21. Steep mapping looks like what Xonotic does, since it definitely supports that full depth effect. It would certainly be nice if we could see it for TDM as well... imagine that depth effect showing in between bricks on walls
  22. The characters are fully rigged (body and face rigs) and work with all TDM animations used on other characters. If you mean creating a custom animation myself, I haven't tried it yet and it's not something I have the time for now.
  23. Sorry for the confusion about "which type of parallax mapping I mean": To be fair, I'm not sure myself which is which: I know that parallax is the effect that, alongside bump mapping which creates directional shadows on the details of a texture, stretches and shrinks parts of a texture based on camera position / angle in order to create the illusion of depth. I imagine there are multiple ways of achieving that, and personally I'm not picky about which is used... the most realistic is obviously the best, but I assume performance also plays an important role.
  24. Not really... like I said the engines I know of use the normal map for everything. I'm sure there are countless FOSS engines that can offer us an example though. Like I said, fhDOOM mentions parallax mapping on its page, so definitely a great place to look and see how they did it!
×
×
  • Create New...