News | Forum | People | FAQ | Links | Search | Register | Log in
Modelling Help\Screenshots\Requests
It has always been difficult to get decent models for quake 1. So a thread where people can get advice on making models and post a work-in-progress for critiques is long overdue.

Any requests for models may well get met with silence. Specific requests will likely stand a better chance; "I'd really like a knight but carrying a shield" might be better received than "we need a mdler to join our mod remaking counter-strike for darkplaces".
First | Previous | Next | Last
Smashed Window! 
I modelled a smashed window1_2 texture, sorry for that.
With some patience you can make your own shatters.
I could animate it, that would be a nice effect.
So far I threw in my own window. :P


...that's a really impressive attention to detail. 
Inside a wall it looks great without the shatters, but with a transparant glass texture.
Also the possibilities to extend it to func_breakable, using the shatters as gibs and climb through. 
Merging Models 
I have a model.mdl and a weapon.mdl.
Usually I can merge the weapon.mdl into the model.mdl and manage it on the right place.

This goes for models with a single sided skinfile, ie. no vertice parts behind eachother.
Result is that the weapon skin ends up aside the original skinfile. Fine.

Now I have this model that uses a skinfile without the mirror side, it uses a UV filter.
So when I try to merge the weapon.mdl the skin part splits up the original skinfile and ruins it.

With great patience I reordered the base file back to a new skinfile, but end up with a model that looses vertices.

Is there another way to add a weapon.mdl to a model.mdl? Without crunching the skinfile. 
Several Md3 Files Into One Mdl 
What is the easiest way to combine the several md3 model parts together in one mdl?

md3tomdl uses a txt file for python, but its use is only one md3 file.

Me stupid donkey won't concern to export every single frame to a dxf, and then merge it into the other.
But old qmle has a way to merge only one mdl into the whole frame set.

So if I'm right I will export 180 frames of the head.mdl to dxf to import into 180 dxf files of the upper.mdl for another 180 dxf files of the lower.mdl into the converted frames of the combined head/upper single frames.
Then rearange the merged file to the already fixed model for a fitted look.
Finally I can import them all in one mdl file.
I know it sounds a bit hillarious, but by that time I think my skinfile as my patience is ruined. :P

That's because I end up with three md3 files that need to be merged into one mdl file.

I've done it once with the Q3 skeleton, but I'm wondering if there isn't a simpeler way. 
Combining MD3s 
Hi Madfox. I'd say this is a task that GMAX is very suited for. With the Quake 3 bits installed I recall that it has the native ability to match up tags. Once you've merged the models in the editor & lined up the animations how you want, you can export them as a single MD3 file and use md3tomdl from there.

Blender is probably capable of doing the same things, although you'd have more manual work lining everything up there. 
Thanks for the hint, I have Gmax, but I considder it a big jump.
It gives me the same result as QMLE.
When I import a file it goes along the whole animation for hundred of frames.
I think I'm too stupid to use the manual. It all reclares on instant files of animations. So I have to take the track of starting from zero.

Also I'm a bit concerned I loose the skinfile on the way. My knowledge is rather poor and I'm so keen on old Qmle and Quark4.07.

It shouldn't be that big deal to write a script that joins these seperated md3 files?
Anyway I'm already sofar I installed Python32 to use the Qmle-v0.6. (readme says v0.5)
I thought it was the same python that comes with Quark, me fool, took me years to discover.

The Python Image Library, the Pillow fork only goes for Python2.4. Learned something again.

Here is what I wrenched out of three md3 files with QME v3.0 and Quark4.07.
It's a hell of a job and I think I lossse my relegion.
But resistance is futile.
The problem is that each step of the merging requires you to make decisions about how to perform the merge:

When you're merging the skin file, how do you want to combine the pieces into a single image? Do you want to shrink some parts down, can you rotate them to fit?

Similarly, when you're combining the animations of a torso/legs model, the two sets of animations are independent, so you need to decide if you want the idle animation or running animation for the legs to go with the firing animation from the body.

It ends up being too many decisions to handle properly in a script - there's no sensible default answer to each question. 
Tessla Coil 
I've got another question that is rather obvious.

I made a tessla coil with a lightning bold instruction on
classname info_notnull
use CastLightning
enemy 1

When I made the map in 2013 everything went well.
Now I want to use this static entity again, but I'm left with a dark line that seems to be a changed lightning bold.

I tried the same mapfile in the pack, used different older compilers and engines but the results stay the same dark line in stead of a bright bold.
Strange enough the bsp in the pack gives a bright one. 
Couple Of Suggestions 
• The lightning bolt models are progs/bolt.mdl, progs/bolt2.mdl and progs/bolt3.mdl. I think that shambler lightning uses the first one. Look in your mod directory and check you don't have a modified version of the model anywhere

• Test different engines and see if they have the same problem or not 
After compiling a new map with the components and using it in a fresh dirctory everything works fine.
My progs directory has got deluted somehow.
Thanks for the advice.

I tried Blender for the modelling part but this engine is so clumsy for a newbee. But it's free so I shouldn't complain.
Gmax has its efforts, but I'm stuck on the export extentions *.gmax and *.P3D. I might as well use Max3d-r4, although I can only work with it on win98. 
To export to MD3 you need the "Tempest" add-on pack installed. Once you have that in place, you can install a better MD3 exporter than the default, but one step at a time... 
Pine Tree Model Pack 
Also posted on discord, I did not want to forget about this place. I've had a few people ask me about foliage, so I've posted this model pack with 3 pine tree models. All use alpha-masked skins.


In game preview:


The zip includes a short readme on how to setup the animation frames if you desire and some lighting tips. (Note in Trenchbroom because of the way interpolation works, the skin will have 'pink' pixels unless you render in Nearest interpolation. In game the skin will be masked properly by the engine.) 
Looks incredible especially animated. Thanks for sharing. 
Cool Stuff 
Thx a lot!! 
Makes me to reconvert my Q1Treez with transparant layers. 
nice additions! 
Really Awesome Trees Man! 
I hope these get put to good use :) 
Is there any reason to not go crazy using models? Any performance or other technical issues? Redfield's trees led me down the rabbit hole of Quake models plus I've been wanting to make use of foliage for a while now. 
There were reasons about a decade ago, but in 2019, there are none. 
There's still the lighting issue, models don't get lightmaps, they just sample the light value of the surface under their center, so depending on context they will look out of places with the rest of the lightmapped brushwork. Would use them alot more otherwise.
These pine trees are pretty cool though, and the animation is obviously only possible with models, but they work cause it's dark ambient lighting. If you had very directional lighting they could look quite weird.
Pritchard is doing some cool stuff with palm trees and having them as brushes really helps integrated them into the level. 
Is there any reason to not go crazy using models?

It depends. In terms of raw polycount, not really. If you had, say, a forest of animated trees, then you'd see a perf hit, mostly from the vertex animation. The transparency might be a bit of a hit as well.

It would be rather difficult to get nice model lighting using qbsp. You'd basically want to bake all that onto the texture and account for the uniform shading.

You have more flexibility with q3map2 since models can lightmapped or vertex lit (using the lightgrid) on a per-model basis. both methods can looks great. 
Decent Foliage Lighting 
There's some chat about this very issue in the quake engine wishlist thread here: 
Doesn't FTE already use vertex lighting on models?

Of course i could be wrong, but there is a "vertex" mode in the lightning menu/options. 
Would anyone happen to know if this model has ever been released? 
Forccefield Riv. 
I would like some advice for this model.
I am tweaking with the framespeed of the forcefield static.
I added a {self.nextthink = time + 0.01;}; option to the frames,
as I thought the framerate is too slow.
Now I'm not sure if it works allright, as I've seen it switching from end to start.

Also I'm searching for an option to toggle the static.
Now it is coded as killtartget, but I would like the toggle option more.

Why using tons of triangles instead of alphamasked textures?

An alphamasked MDL can do the trick of morph-target animating tons of pseudo-particles using only a few triangles. You can even combine it with skin animation. 
I'm using it for an old mod and I'm not costumed to alpha channels.
Once made a lightning static with an alpha and a sprite.

I thought combining it with an alpha mask could enhanced it, but was not sure how to do it.
I saw the Pine trees from Redfield, but was tricked with the alpha thingy. 
not sure how to do it.
Just paint the transparent areas of the skin with the color index 255.

Some engines also requires a special pointless flag to be set in the model. 
Backwards compatibility isn't pointless. 
< ~ // ... 
Using a func_illusion, added the texture after skip brush results in this.

Working with alpha's make use of *.tif and *.psd. And that are not the usual import values for qmle. Bmp won't work so I don't know what it is. 

No use, I don't know how redfield made it but I see no way to import an alpha channel in Qmle or Q2Editor, or Noesis. 
mankrip - the assumption is that some existing mdls will be using index 255 as opaque colour, before this whole mdl alpha thing was ever conceived. 
Please tell us what engine you are using. You know that mdl alpha only works in a few of them, ya? 
Quakespasm_AD. Pinetrees of Red field run fine. 
#1617, #1613 
I've never found any MDL that uses color 255 as opaque.

This "backwards compatibility" thing was inspired by problems such as GLQuake-targeted maps using fullbright color indexes in textures by mistake.

However, in the vanilla Quake palette, there's no risk of color 255 being automatically selected by any program because its RGB values are exactly identical to those of another color that's located earlier in the palette. Color 255 is a duplicate color, and any color selection algorithm will pick up the first occurrence of that color. Color 255 is ignored.

The only ways to select color 255 by mistake is by using a modified palette for conversion (which is dumb), or by manually selecting it instead of its earlier occurrence in the palette (which is also dumb). 
You're assuming that everybody's pipeline is identical, and that you've seen every single MDL that was ever created. 
That's pipeline-independent.

The only reason to use a modified palette with a non-duplicated color 255 is to make it easier to create textures with transparent texels. Using a modified color 255 for opaque textures is dumb.

Using the default unmodified Quake palette will never result in undesired transparent texels. It's not about the pipeline, it's about math. 
Alphamask Color != Alpha Channel 
This is one of the pine trees skin:

I could be wrong on this but, you are not assigning an alpha channel in any model editor. As stated above you just USE the garish pink color(255) in your skin?

The engine will know what to do. 
Using the default unmodified Quake palette will never result in undesired transparent texels.

This is, again, assuming that every image editor will use the exact same algorithms in the exact same way.

The amount of times I've been burned this way is countless. 
The method I used to set index 255 as transparent is to set flag 'MF_HOLEY' or bit 0x4000, or flag 16384 in normal speak.

Without this bit, Quakespasm will not mask index 255. So far, QS 0.93 is the only 'out of the box' engine I have been able to see support for this. Older DP builds and FTE don't mask 255 on these models, where QS does. MarkV fails to properly mask 255 when other full-brights are present, where QS does not have this issue.

In order to set this flag I use Preach's home brew qmdl Python plugin. Import qmdl Helper and set the mdl flag as outlined in Preach's guide. You could set this flag in QMe under model Properties-> flags, however saving any model in QMe will break smooth shading across seams. So if you shade normals smooth in Blender, QMe will break them, qmdl will not and is the best approach to set this flag. 
Sorry Mankrip 
But that sort of argument really doesn't wash. It's all jolly beans until you find that one obscure mod with all the bollocked skins. Back in the day it would be pretty common to be painting in indexed colour right from the start, instead of converting from a true-colour image, and we have to assume that others in the past may have picked index 255 just because they can. I know we're just jacking around with Quake as a hobby and this isn't a serious production environment, but a little bit of effort to catch these very possible compat issues is the right approach. 
Here's a positive case for using individual particles instead of alpha when it comes to force fields

It's easier to see in an engine with interpolation than in the animated gif, but each particle has an animation as it fizzles out on the boundary of the field, stretching vertically as it collapses horizontally. I don't think you could achieve the same effect with any fewer polygons if you used alpha masks. 
I tried to update python32 with the modelHelper, but there is something wrong. I think it must be the version.

I use Python3.2 and when I want to use the HModelHelper I need a pip file. Then it wants a Finally Pyhton gives an unexcisting handling.

So my modelling stays aligned with the brush vertices. I tried a to make a lowerground fog by using a slow screwed pattern. I wonder how it would look with an alpha.

It's all jolly beans until you find that one obscure mod with all the bollocked skins.

Dumb assets shouldn't dictate engine behavior. That's my point.

Supporting all the quirks in vanilla Quake requires lots of hacks already. The less hacks to support in the engine, the better.

Hack-based assets are only good for games with closed source code, where there's no other way around engine constraints.

There's no need to clutter open source engines with compatibility with outdated user-made hacks. Keeping it in is a green sign for users to keep doing ugly hacks instead of doing things in a sane way. 
Dumb assets shouldn't dictate engine behavior

They should, actually, making the assets display and function is the only job the engine has.

There's no need to clutter open source engines with compatibility with outdated user-made hacks.

Alpha transparency on models and textures is an user-made hack. BSP2 is an user-made hack. Skyboxes are an user-made hack. I could go on... 
1) Then go ask id software for a refund because of all the user-made crap that doesn't work in the official versions of the engine.

The work of a Quake engine is to play Quake. Support for extra features isn't mandatory.

2) Quit derailing. You know I'm talking about poorly thought-out crap. But since you talked about alpha, here's an example.

self.flags |= EF_ADDITIVE; is a dumb way to implement additive blending, because blending modes should be mutually exclusive.
An independent self.alphamode field would allow for enumerated selection of blending modes and to toggle blending, eliminating the atrocious problem of self.alpha=0; being opaque:

self.alphamode = 0; // 0=disabled, 1=weighted, 2=additive, etc
self.alpha = 0.8; // intensity if enabled

And I'm not even touching on the "alpha should use 8-bit integer values" subject. 
I am new to Python. I had an install on Win7 of Python 35-32, and made sure qmdl-v0.6 is in the site-packages.

Now I haven't the slightest idea what to do.
When I try the examples like : knight = Helper(),
knight is not recognized.

What string is used to get grip on the mdl? 
Assuming you have your Python up to date it really isn't too hard.

start with:

from qmdl.helper import Helper
model = Helper()

Now the path to your model is:


(Change C drive as necessary obviously)

Now you are ready to edit the model as described in the tutorials.

Remember, you can still edit with QMe, if you go to model Properties -> Flags in the View menu, you can set the bit for alpha masking. The only reason I suggest against this method is QMe is horribly antiquated and will ruin any vertex normal shading you applied in external modelling software. 
I installed PILL and qmldv0.6, but I can't get the module installed.

every statement I make in Python ends up with "don't excist" ie. / python is not a commen instrucktion.
from qmdl.helper import Helper() / from is not a commen instruction.

I think I need to reinstall python. WinXp gave me no trouble, Win7 I can hardly find the file. 
What The "stdin", Cleese? 
File "(stdin)", line1
invalid syntax

mounty pyhton's password? 
Me Noob 
I managed to work with md3 models in the md3tomdl converter, but for some reason I don't know what happened.
I can't use any argument in Python, because I'm such a noob.
I thought ">>>from site import qmdl" would be sufficient, but all turns out in syntax error. 
Model Convertion 
The convertion I made of the Q3-Q1 eliteforce soldier looks surpreme on texture quality, but the import mdl parts move terribly wanky. It's only vissible in the stand scene, it isn't that pronounced when the model starts moving.

Anyway hard enough to make my borc for contentment of my own sake. The texture may be a bit sloppy, but it seems I'm asimilated in some way.

Model Request 
I'd like to request a model of the ranger hanging from a rope.
Hanging as in with the rope around his neck.
It's for the sewer jam. 
is the implication here that it all got a bit too much for ranger? Or was it a lynching by a hostile mob? 
When I would hang there with an axe I could come to a solution.
I assume he's victim of a whiplash. 
Autoerotic Asphyxiation 
Victem Of Python 
>>>from qmdl import Helper
>>>knight = Helper()
Traceback (most recent call last):
File "(stdin)", line 1, in module>
File "C:\python32\lib\site-packages\qmdl\", line 18, in load
with open(filename, "rb") as file:
IOError: [Errno 2] No such file or directory: ''

In what directory should I set mymdl.mdl? 
Chthon Model 
looks like someone is making a faithful model upres for Chthon: 
Many nipples! 
Python looks for mymdl.mdl in your "current working directory". When you run a script by double-clicking it or running on the command line, the working directory is usually the folder that the script itself is located in. So try putting both the model and the script in the same folder.

If you can't get that to work, you can try changing the line to include the full path to the model, like:
Thanks for your attention, Preach. Sorry to interrupt for something that looks so simple, but python doesn't want my mdl files. It keeps returning the file don't excist by giving it another name. vlak.mdl is no x0blak.mdl, or do I invalid an argument here?
Maybe I've got Pyhon wrong installed.

>>> from qmdl.helper import Helper
>>> knight = Helper()
>>> knight.load("C:\python32\Lib\site-packages\qmdl\vlak.mdl")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\python32\lib\site-packages\qmdl\", line 18, in load
with open(filename, "rb") as file:
IOError: [Errno 22] Invalid argument: 'C:\\python32\\Lib\\site-packages\\qmdl\x0

>>> from qmdl.helper import Helper
>>> knight = Helper()
>>> knight.load("C:\File\vlak.mdl")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\python32\lib\site-packages\qmdl\", line 18, in load
with open(filename, "rb") as file:
IOError: [Errno 22] Invalid argument: 'C:\\File\x0blak.mdl'
Confusing Error Message 
madfox, a backslash in a Python string is treated as an escape character, which is why you're getting the weird error message. "\v" is the escape sequence for a vertical tab, which is hex "0b", which is why you're seeing "\x0blak.mdl" (Python prefixes hex sequences with "\x" when displaying them).

If you're using Python 3, you should be able to prefix the string with "r" to make it a raw string, like this:


Alternatively, you could in theory escape the backslashes:


Alternatively, it sounds like Python will let you use forwardslashes instead of backslashes in Windows paths, at least in some circumstances, however I don't know if that would work with the module you're using. 
The "r" syntax for a raw string literal is also in Python 2, apparently. 
Py Thon 
Thanks for your comment!

I've read somewhere PILL and PILLOW won't work together.
They're both in my Python32, but I can't uninstall one or the other.
Now I'm a bit confused between the next string and my totally lack of understanding the args. :P

>>> knight.load(r"C:\python32\Lib\site-packages\qmdl\vlak.mdl")
<qmdl.helper.Helper object at 0x00C2A550>
>>> knight.append_skin("avlak.bmp")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\python32\lib\site-packages\qmdl\", line 310, in append_skin
from PIL import Image
ImportError: No module named PIL
No PIL Library 
That's the error you get if PIL isn't installed. Try following the instructions at the top of the question posted as

They should uninstall PIL and reinstall PILLOW, the person who posted the question eventually found that retrying the commands fixed his issue... 
Extract Skeleton Out Of QME 
Is it possible? I found some skeletal animations in mdl models in Navi seal mod and i would like to mess around with. 
Excuse me?
Skeletal anims in QME?
Are you sure?
Quake engine uses vertex doesn't have bones that move,it tracks the movement of all vertices (if this wording is correct). 
ijazz2019, Yes it is true, but it sesms QME writes joint track info after the regular data in the mdl. Go download navy seal and take a look at pdude.mdl 

>>> from qmdl.helper import Helper
>>> knight = Helper()
>>> knight.load(r"c:\python\Lib\site-packages\qmdl\vlak00.mdl")
<qmdl.helper.Helper object at 0x0051AA70>
>>> knight.append_skin(r"c:\python\Lib\site-packages\qmdl\avlak.bmp")
<qmdl.helper.Helper object at 0x0051AA70>

So far so good, but nothing has chanded the model.
Or am I looking to a repeat of the mdl command
and no append_skin excist? 
You need to put a command at the end to save the model again"c:\python\Lib\site-packages\qmdl\vlak01.mdl")

I tend to use a different filename for the input and the output of my scripts so I can see the difference (and so I have a backup if there's a bug in my script!). But you can use the same filename if you prefer. 
I helped myself out trying some kids tuts for python. Soon it looks as if my turtle.forward comes out square, but that's the end of the line. Every other way of statement ends up wined so my setup isn't right.

I did get a next mdl though. What I'm trying is to make a simpel square of four vertices, add a skinfile with an alpha and see if it comes out transparant in Quake. (If it would be that easy).

Now I end up with a new mdl file what I can't detect, as qmle nor noesis identifies it as a commen mdl. It must be the 32 bit bmp file what blocks. 
Could you upload the script, model and skin somewhere for me? It sounds like there's a bug in my code if its outputting an illegal model. 

Redfield, how did you manage that pinetrees?! 
A Fix And A Bug 
I quickly noticed the big issue here - your skin file doesn't have the correct width/height for the model. The script assumes that you supply a correctly sized skin, and doesn't attempt to resize it or even warn you.

However, once I tried adjusting your skin to match the model, I discovered there is a bug in qmdl I can't quite nail down. Even if the image dimensions matches the image, it seems that the skins don't load correctly if the dimensions are not multiples of 4. Can't nail down exactly what's causing that, so I recommend:

1) resize the model's skin to a size that's a multiple of 4 in each direction, e.g 128 by 64.
2) change the skin to match the dimensions of the model

I got the import to work with your script after those steps. I'll see if I can investigate the bug further now... 
No Bug 8bit Limit 
I adjusted the skin to 128 x 64 and it turns out a usefull mdl.
Nothing wrong with the code.
I think the reason it turns out with a scattered skinfile is because it is converted back to the 8bit quake.pal.

Here is my result. 
is there a q1/q2 export for Blender 2.8? 
See Example 
That doesn't work with Blender 2.8. 
Great, I use Blender v2.6
Take a look at endeavor's tutorial
Maybe you can use the export plugins. 
I remember being annoyed when I wrote a MDL export plugin for an earlier version of Blender, and the next version changed the APIs I was relying on. Puts you off maintaining it...

What I often recommend for creating MDL files is a two stage process - export from your model editor into a more commonly supported format, and then convert that to MDL. I have a tool that support conversion
from MD3 to MDL:
or from FBX to MDL:

Hopefully one of those routes is possible from the version of Blender you use. 
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2019 John Fitzgibbons. All posts are copyright their respective authors.