 Mankrip
#1627 posted by Preach on 2019/07/28 19:53:40
Here's a positive case for using individual particles instead of alpha when it comes to force fields
https://tomeofpreach.wordpress.com/2012/11/18/forcefield-smoke/
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.
 Fogroll
#1628 posted by madfox on 2019/07/29 10:42:54
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 get-pip.py. 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.
example
fogroll.mdl
#1629 posted by mankrip on 2019/07/31 04:45:43
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...
 OTP
#1631 posted by mankrip on 2019/07/31 12:35:58
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.
 Python
#1632 posted by madfox on 2019/07/31 23:19:26
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?
 Madfox
#1633 posted by Redfield on 2019/08/01 04:03:58
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:
model.load("C:/MyFolder/mymodel.mdl")
(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.
 Yes
#1634 posted by madfox on 2019/08/01 04:27:16
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.py / 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?
#1635 posted by madfox on 2019/08/01 04:43:18
File "(stdin)", line1
invalid syntax
mounty pyhton's password?
 Me Noob
#1636 posted by madfox on 2019/08/02 02:04:00
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
#1637 posted by madfox on 2019/08/05 02:01:05
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.
:P
 Model Request
#1638 posted by ijazz2019 on 2019/08/05 15:15:04
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.
 Guilty!
#1639 posted by madfox on 2019/08/06 11:10:50
 Gnoice
#1640 posted by Kinn on 2019/08/06 12:32:44
is the implication here that it all got a bit too much for ranger? Or was it a lynching by a hostile mob?
 Fagots!
#1641 posted by madfox on 2019/08/06 16:43:26
When I would hang there with an axe I could come to a solution.
I assume he's victim of a whiplash.
 Autoerotic Asphyxiation
#1642 posted by killpixel on 2019/08/06 21:47:25
 Victem Of Python
#1643 posted by madfox on 2019/08/07 02:31:17
>>>from qmdl import Helper
>>>knight = Helper()
>>>knight.load("mymdl.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 2] No such file or directory: 'mymdl.md'
In what directory should I set mymdl.mdl?
 Chthon Model
#1644 posted by metlslime on 2019/08/08 19:16:58
looks like someone is making a faithful model upres for Chthon:
https://twitter.com/DanielWienerson/status/1157178572672364549
 Nipples?
#1645 posted by Shambler on 2019/08/08 23:28:25
Many nipples!
 Madfox
#1646 posted by Preach on 2019/08/10 09:10:28
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
#1647 posted by madfox on 2019/08/11 07:16:11
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
#1648 posted by iw on 2019/08/11 13:50:49
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
#1649 posted by iw on 2019/08/11 14:03:52
The "r" syntax for a raw string literal is also in Python 2, apparently.
 Py Thon
#1650 posted by madfox on 2019/08/12 03:31:37
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
#1651 posted by Preach on 2019/08/13 22:39:22
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
#1653 posted by ijazz2019 on 2019/08/17 15:13:39
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
 >>>
#1655 posted by madfox on 2019/08/21 00:49:53
>>> 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
#1656 posted by Preach on 2019/08/21 21:57:49
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!
#1657 posted by madfox on 2019/08/22 02:01:44
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
#1658 posted by Preach on 2019/08/23 00:30:27
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
#1659 posted by madfox on 2019/08/23 16:34:45
mdl
Redfield, how did you manage that pinetrees?!
 A Fix And A Bug
#1660 posted by Preach on 2019/08/23 23:25:32
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
#1661 posted by madfox on 2019/08/24 02:38:45
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
#1663 posted by madfox on 2019/08/26 18:23:05
That doesn't work with Blender 2.8.
 Ha!
#1665 posted by madfox on 2019/08/26 21:41:45
Great, I use Blender v2.6
Take a look at endeavor's tutorial
Maybe you can use the export plugins.
 Blender
#1666 posted by Preach on 2019/08/27 08:19:32
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
#1667 posted by madfox on 2019/11/06 20:39:18
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();
};
#1668 posted by madfox on 2019/11/06 20:44:08
#1669 posted by metlslime on 2019/11/06 21:54:33
vibro1_start randomly plays either "broke" or "stand" -- so, that's why some of them are not moving. If you want them all to start moving when triggered, don't have the random check in there.
 Yes
#1670 posted by madfox on 2019/11/06 23:06:58
That seem to be the right solution, they all roll now.
==================
void() vibro1_start;
void() vibro1_start =
{
local float r;
if (self.pain_finished > time)
return;
{
vibro1_stand1 ();
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();
==========================
For my humble request, the same macro is used by the turnwall. But it needs to start and stop.
How can I make it toggable?
 Toggle
#1671 posted by Preach on 2019/11/06 23:12:46
create two functions vibro1_toggle_on, and vibro1_toggle_off
The "off" function needs to set nextthink to -1, and set "use" to vibro1_toggle_on
The "on" function needs to set nextthink to time + 0.1, and set "use" to vibro1_toggle_off
Finally, you need to add a line to vibro1_start which sets "use" to vibro1_toggle_off.
#1672 posted by yhe1 on 2019/11/07 04:04:42
Damn, you trying the recreate chasm levels inside quake? I don't think the chasm levels are that good, only thing worth salvaging are the monster and weapon models.
 Yeah!
#1673 posted by madfox on 2019/11/08 04:08:19
I'm starting to believe my own lies, yes that's the way to do it.
Now I can spin down the fans at commands. Really thanks for the hint.
Usually I get cramped by warnings but this time the algebacary is on my site.
yeh1, the levels may not be that good, but what if I use the buttom to go under to furnish the refinary and jump in a fan tunnel?
Chasm monsters deserve a well arrayed terratory.
I wish I could lay my hand on that alfa_mask texture. I'm using static fences , as they are the only way for me to obtain transparancy.
 @madfox
#1674 posted by Tribal on 2019/11/09 07:38:10
I like the theme behind Chasm maps, but they are too tiny (you don't have space to run/maneuver) and, like old doom maps, they aren't 3D (you don't have vertical action).
Would be better if you stick with the theme, but not with the old limitations/architecture. Think of it more like a remix than a remake.
 Stratos Attack
#1675 posted by madfox on 2019/11/12 18:30:18
I'm trying to give Stratos a quakey apearance with chasm effect.
So I attached the scrag attack to its needs and changed the w_spike into a circle sprite.
It is shooting round sprites now, but the positioning is a little out of centre.
Also it shoots them one after another, nor at the same time.
#1676 posted by yhe1 on 2019/11/13 04:26:14
If I recall correctly, that huge robot from AD fires two rockets at the same time, as does the centroid from mission pack 1, couldn't you look at their code?
 Fire Range
#1677 posted by madfox on 2019/11/13 08:53:27
I could take a look at the soa.qc.
For now I'm puzzled by the shooting range of the scrag which comes in a v shape from the scrag towards the player.
Stratos fires exact in the opposite way.
 V Shape
#1678 posted by Preach on 2019/11/14 23:50:12
The V shape is an illusion created by the particle effect on the scrag spit model. If you replace w_spike.mdl with the rocket model you'll see how the smoke particles give a clearer indication of the way the spike moves. It's really just a single object moving in a straight line from scrag to player.
 Yes
#1679 posted by madfox on 2019/11/15 01:20:31
That's the same outcome when I use a sprite in stead of the w_spike.
My intention is to make it look more like the Stratos attack, ie. starting at the same time on both sides.
I've got the idea the sprite won't come up for nine frames, only the first one is used. That doesn't give it the facet look like a sequence of rings.
The railgun from dr shadowborg uses this sequence, I just don't know how to intergrate it.
|