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
Chthon Model 
looks like someone is making a faithful model upres for Chthon:

https://twitter.com/DanielWienerson/status/1157178572672364549 
Nipples? 
Many nipples! 
Madfox 
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:
knight.load("c:\models\cave-troll\mymdl.mdl") 
Errno22 
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\helper.py", line 18, in load
with open(filename, "rb") as file:
IOError: [Errno 22] Invalid argument: 'C:\\python32\\Lib\\site-packages\\qmdl\x0
blak.mdl'
>>>

>>> 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\helper.py", 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:

knight.load(r"C:\path\to\file.mdl")

Alternatively, you could in theory escape the backslashes:

knight.load("C:\\path\\to\\file.mdl")

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. 
Correction 
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\helper.py", 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

https://stackoverflow.com/questions/43560898/import-image-using-pillow-no-module-named-pil

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. 
Six-Shoota 
Excuse me?
Skeletal anims in QME?
Are you sure?
Quake engine uses vertex animation....it 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 
&gt;&gt;&gt; 

>>> 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? 
Madfox 
You need to put a command at the end to save the model again

knight.save(r"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. 
Yes! 
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. 
Error 
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. 
So 
mdl

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. 
Ha! 
Great, I use Blender v2.6
Take a look at endeavor's tutorial
Maybe you can use the export plugins. 
Blender 
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:
https://tomeofpreach.wordpress.com/md3tomdl/
or from FBX to MDL:
https://tomeofpreach.wordpress.com/qmdl/fbxtomdl/

Hopefully one of those routes is possible from the version of Blender you use. 
Statics 
I made turning windmill as a static entity. And did some qc to make it turn. I wanted to make it toggable but not sure how to do it.
When I use two poses to make them turn and break I can use a button on them.

Now the strange effect is that although all windmills have the same targetname, only three of them turn. Toggling makes the other ones turn.

Not sure if the code is right, but only three mills while all size are the same targetnames?

turning walls

Here is the static code:

$frame 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
$frame 21 22 23 24 25 26 27 28 29

void() vibro1_stand1 =[ $0, vibro1_stand2 ] {};
void() vibro1_stand2 =[ $1, vibro1_stand3 ] {};
void() vibro1_stand3 =[ $2, vibro1_stand4 ] {};
void() vibro1_stand4 =[ $3, vibro1_stand5 ] {};
void() vibro1_stand5 =[ $4, vibro1_stand6 ] {};
void() vibro1_stand6 =[ $5, vibro1_stand7 ] {};
void() vibro1_stand7 =[ $6, vibro1_stand8 ] {};
void() vibro1_stand8 =[ $7, vibro1_stand9 ] {};
void() vibro1_stand9 =[ $8, vibro1_stand10 ] {};
void() vibro1_stand10 =[ $9, vibro1_stand11 ] {};
void() vibro1_stand11 =[ $10, vibro1_stand12 ] {};
void() vibro1_stand12 =[ $11, vibro1_stand13 ] {};
void() vibro1_stand13 =[ $12, vibro1_stand14 ] {};
void() vibro1_stand14 =[ $13, vibro1_stand15 ] {};
void() vibro1_stand15 =[ $14, vibro1_stand16 ] {};
void() vibro1_stand16 =[ $15, vibro1_stand17 ] {};
void() vibro1_stand17 =[ $16, vibro1_stand18 ] {};
void() vibro1_stand18 =[ $17, vibro1_stand19 ] {};
void() vibro1_stand19 =[ $18, vibro1_stand20 ] {};
void() vibro1_stand20 =[ $19, vibro1_stand21 ] {};
void() vibro1_stand21 =[ $20, vibro1_stand22 ] {};
void() vibro1_stand22 =[ $21, vibro1_stand23 ] {};
void() vibro1_stand23 =[ $22, vibro1_stand24 ] {};
void() vibro1_stand24 =[ $23, vibro1_stand25 ] {};
void() vibro1_stand25 =[ $24, vibro1_stand26 ] {};
void() vibro1_stand26 =[ $25, vibro1_stand27 ] {};
void() vibro1_stand27 =[ $26, vibro1_stand28 ] {};
void() vibro1_stand28 =[ $27, vibro1_stand29 ] {};
void() vibro1_stand29 =[ $28, vibro1_stand30 ] {};
void() vibro1_stand30 =[ $29, vibro1_stand1 ] {};

void() vibro1_broke1 =[ $0, vibro1_broke2 ] {};
void() vibro1_broke2 =[ $0, vibro1_broke1 ] {};

void() vibro1_start;

void() vibro1_start =
{

local float r;


if (self.pain_finished > time)
return;

r = random ();

if (r < 0.5)

{
vibro1_stand1 ();
self.pain_finished = time + 1;
}

else
{
vibro1_broke1 ();
self.pain_finished = time + 1;

}
};



void() info_vibro =
{
precache_model ("progs/vibro04.mdl");
precache_sound ("vibro/vibrosount.wav");

self.solid = SOLID_BBOX;
self.movetype = MOVETYPE_NONE;

setmodel (self, "progs/vibro04.mdl");

setsize (self, '-4 -4 -4', '4 4 24');
self.use = vibro1_start;
vibro1_broke1();

};

 
 
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2024 John Fitzgibbons. All posts are copyright their respective authors.