It says the person that submitted it at nibbits was you? Is that really you or someone pretending to be you? I'll make an account at some stage and sort it out. It looks bad how my name has been pulled from anywhere in the description :(
NiN: Have you tried to use that rotation matrix that comes right after the IREF reference on the bones? It's a rotation matrix, and it needs to be applied to something - either it's meant to rotate the whole model or it's meant to be used on each bone, only explanation I can think of. Like, how each bone has an initial value for position, rotation and scaling, maybe the IREF block also have an initial matrix you should rotate with first?
It's done through ribbons. The hair is bound to the Star2Ribbon01 bone in the model. We don't have ribbons properly documented yet, but you can see the first int32 points to its parent bone. You can turn ribbons off by blanking the reference and you'll see the hair disappear.
I haven't tried using the rotation matrix that comes right after the IREF reference, but the one in the zealot contains no rotation data, just translation.
No, the one in the zealot is a combo matrix with both rotation and translation data. I just can't help thinking it has to be related to why some models get rendered wrong in 3ds Max.
The integer after the bone ref in the model header is the number of bones used for geometry (i.e. after the n first bones the ribbon, attachment bones etc. starts).
No idea why they need to store that, but I guess it defines the highest index you can have in the bonelist (n-1).
Actually, it seems that the first set of bones in the array are visible, while the last set of bones are not visible... I'd guess it's something like NumVisibleBones.
Sorry to bother you guys, but do you plan to offer an application for conversion between .m3 and .3ds formats? I'm asking because I use Blender, not 3ds Max, to model, which can import and export .3ds. I can always use 3ds Max as a go-between, but I thought I would inquire anyways.
@begebies: Blender uses python and I have written my own custom importer/exporter scripts before. But I would need to learn more about about animation sequences to be able to write one for the SC2 engine.
Also guys, I have noticed that for the zealot which uses a 28-byte vertex (with the 0x40000 flag set) that the unknown bytes are non-zero for the blades. And if you look at the screen shot of the in-game zealot there is a glow effect going on with those blades.
The glow effects are done through particles, the PAR_ chunks in models. I'm not sure what those unknown bytes are for in the vertices but I'll check into them when I have the time. As far as I know blanking them has no effect on the model in-game. I do believe alot of the values in the model are not for the engine but for 3ds max itself, however I maintain the viewpoint that if the engine can render it without those values then max should be able to aswell. Good to see you contributing therockman, it's great to have some fresh people on the scene helping to figure things out :).
As for an application for conversion, it's possible. HeliosDoubleSix and I were talking about creating a metaformat to use for easy importing into different modelling applications. I'm going to stick to 3ds max because I know Blizzard are using it, so everything Blizzard includes in their M3's must be possible through max. Previously I'd designed a World of Warcraft .M2 importer/exporter so I'm able to reuse alot of that code and am reusing it for the future exporter. A metaformat is a little too much overhead for me, I don't get alot of spare time as it is, and it would mean coding in something like C plus which is not my fortay. I do feel like restricting people to 3ds max is not the way to go but at the moment, it'll have to be up to other people to sort it out.
Collada is a pretty good format, witchsong. If your 3d modelling program doesn't support it, it's time to change it :P
Naw, just kidding, but .dae should be fine.
Collada is a pretty good format, witchsong. If your 3d modelling program doesn't support it, it's time to change it :P Naw, just kidding, but .dae should be fine.
Max integration will be awesome too.
I thought Witch was working on a COLLADA converter?
@begebies: Blender uses python and I have written my own custom importer/exporter scripts before. But I would need to learn more about about animation sequences to be able to write one for the SC2 engine.
I would be overjoyed if you could manage to write import and export plugins for Blender! :D I don't have enough experience with Python to do it myself, so I'll be watching your progress with anticipation.
What kind of animation problems are you running into? While I do not know how to write code, I can at least compare and contrast things from an art stand point and maybe be able to sell you what is different to help narrow down things. Usually end up doing this sort of thing for all the independent engines I work with.
I seem to have found another version of the MODL block, of type 21...
Now, this just seems very odd to me; the difference between type 20 and 23 were 24 byte, while the difference between type 20 and 21 are 8 byte. Now, anyone else notice that 8*3 = 24, like the number kinda denotes how many 8-byte something there is in the chunk? This surely cannot be a coincidence?
Or it might be flags, that's a possibility too. But I don't think the number is merely some ID, it has some other meaning to it.
Okay, I think they are flags, pretty much deciding which data to read. I guess each flag represent an optional entry in the struct, but dunno. At least that would make sense with the MODL chunk.
@witchsong: Go
It says the person that submitted it at nibbits was you? Is that really you or someone pretending to be you? I'll make an account at some stage and sort it out. It looks bad how my name has been pulled from anywhere in the description :(
@NiNtoxicated01: Go
I talked with the folks there and told them to change me to owner. I can transfer it to you if you want?
I mentioned you as author in the text now. :)
I noticed in-game now that Zealots actually have hair that isn't included in the geosets.
Hair? How does it handle hair?, sc in general I mean.
Also, progress on the importer?
@xcorbo: Go
No idea, is there any other models with hair/tail/fur like stuff?
EDIT: I came to think... What if this hair-like thingie is an attachment? Gotta check that out.
NiN: Have you tried to use that rotation matrix that comes right after the IREF reference on the bones? It's a rotation matrix, and it needs to be applied to something - either it's meant to rotate the whole model or it's meant to be used on each bone, only explanation I can think of. Like, how each bone has an initial value for position, rotation and scaling, maybe the IREF block also have an initial matrix you should rotate with first?
@witchsong: Go
It's done through ribbons. The hair is bound to the Star2Ribbon01 bone in the model. We don't have ribbons properly documented yet, but you can see the first int32 points to its parent bone. You can turn ribbons off by blanking the reference and you'll see the hair disappear.
I haven't tried using the rotation matrix that comes right after the IREF reference, but the one in the zealot contains no rotation data, just translation.
@NiNtoxicated01: Go
No, the one in the zealot is a combo matrix with both rotation and translation data. I just can't help thinking it has to be related to why some models get rendered wrong in 3ds Max.
The integer after the bone ref in the model header is the number of bones used for geometry (i.e. after the n first bones the ribbon, attachment bones etc. starts).
No idea why they need to store that, but I guess it defines the highest index you can have in the bonelist (n-1).
Actually, it seems that the first set of bones in the array are visible, while the last set of bones are not visible... I'd guess it's something like NumVisibleBones.
Hey,
Sorry to bother you guys, but do you plan to offer an application for conversion between .m3 and .3ds formats? I'm asking because I use Blender, not 3ds Max, to model, which can import and export .3ds. I can always use 3ds Max as a go-between, but I thought I would inquire anyways.
Thanks :)
@begebies: Go
Well, my code is only gonna be supporting .DAE/.OBJ/.M3, dunno if anyone else will make anything for .3DS conversion. :)
@begebies: Blender uses python and I have written my own custom importer/exporter scripts before. But I would need to learn more about about animation sequences to be able to write one for the SC2 engine.
Also guys, I have noticed that for the zealot which uses a 28-byte vertex (with the 0x40000 flag set) that the unknown bytes are non-zero for the blades. And if you look at the screen shot of the in-game zealot there is a glow effect going on with those blades.
@therockman: Go
The glow effects are done through particles, the PAR_ chunks in models. I'm not sure what those unknown bytes are for in the vertices but I'll check into them when I have the time. As far as I know blanking them has no effect on the model in-game. I do believe alot of the values in the model are not for the engine but for 3ds max itself, however I maintain the viewpoint that if the engine can render it without those values then max should be able to aswell. Good to see you contributing therockman, it's great to have some fresh people on the scene helping to figure things out :).
As for an application for conversion, it's possible. HeliosDoubleSix and I were talking about creating a metaformat to use for easy importing into different modelling applications. I'm going to stick to 3ds max because I know Blizzard are using it, so everything Blizzard includes in their M3's must be possible through max. Previously I'd designed a World of Warcraft .M2 importer/exporter so I'm able to reuse alot of that code and am reusing it for the future exporter. A metaformat is a little too much overhead for me, I don't get alot of spare time as it is, and it would mean coding in something like C plus which is not my fortay. I do feel like restricting people to 3ds max is not the way to go but at the moment, it'll have to be up to other people to sort it out.
Collada is a pretty good format, witchsong. If your 3d modelling program doesn't support it, it's time to change it :P Naw, just kidding, but .dae should be fine.
Max integration will be awesome too.
I thought Witch was working on a COLLADA converter?
He is. :P
The side comment was @therockman :P
I would be overjoyed if you could manage to write import and export plugins for Blender! :D I don't have enough experience with Python to do it myself, so I'll be watching your progress with anticipation.
What kind of animation problems are you running into? While I do not know how to write code, I can at least compare and contrast things from an art stand point and maybe be able to sell you what is different to help narrow down things. Usually end up doing this sort of thing for all the independent engines I work with.
I seem to have found another version of the MODL block, of type 21...
Now, this just seems very odd to me; the difference between type 20 and 23 were 24 byte, while the difference between type 20 and 21 are 8 byte. Now, anyone else notice that 8*3 = 24, like the number kinda denotes how many 8-byte something there is in the chunk? This surely cannot be a coincidence?
Or it might be flags, that's a possibility too. But I don't think the number is merely some ID, it has some other meaning to it.
Okay, I think they are flags, pretty much deciding which data to read. I guess each flag represent an optional entry in the struct, but dunno. At least that would make sense with the MODL chunk.