Anyone else still need a SUR generator?
-
On mine both were equipped.
Adoxa - can you tell us when GetCollisions.dll is triggered exactly? What, when, and why is it logging is what I want to know.
-
StarTrader wrote:
The crashes were caused only by HpThrusterxx and HpCMxx hits. By putting in the hpids only, or by putting in the whole sur part, we cured the crashes.There’s your answer straight away why mine are not crashing. The sur builder adds those entries to single group surs, why i’m not suffering with this. This is all to do with multipart surs and the fact the sur builder doesn’t add that in for multipart surs. Jason has the source for that these days btw.
-
Hardly that big a deal then is it. It’s not like small ships need to have a skin tight sur file, for all the difference it will make.
Do capships, where you would really benefit from multi part surs even use cm’s or thrusters? Stations and solars certainly have no need of them.
This does explain why I’ve never encountered any crashes either.
-
Half agree with you Timmy, where multi part surs would come in handy is odd shaped ships like Star Trek Enterprise style, bases most definately need them though. Just think docking bays and asteroids you can actually fly into or through.
Surely a solution would be to simply add the HpID’s to the multi part sur builder like it already generates them for the single part surs?
Other solution is to fix the sur exporter for milkshape, especially 1.1 as that at least is almost there and generates proper form fitting surs complete with holes for docking bays and the like.
I know Smack is almost there with his his sur builder so clear solutions seem on the horizon for sure.
-
with multi-part surs, is there a way to manually edit them to attach to a certain mesh part other than “Root”? where would that be? or to rob even more time from our programmers: is it a challenge to read out the name of the mesh part the tool is generating a sur part for and then add this as attachment reference instead of “Root”? would be good for e.g. animations of station (and docking ring and jumpgate) and warship bays/airlocks.
-
Gibbon wrote:
StarTrader wrote:
The crashes were caused only by HpThrusterxx and HpCMxx hits. By putting in the hpids only, or by putting in the whole sur part, we cured the crashes.There’s your answer straight away why mine are not crashing. The sur builder adds those entries to single group surs, why i’m not suffering with this. This is all to do with multipart surs and the fact the sur builder doesn’t add that in for multipart surs. Jason has the source for that these days btw.
No. Sur Builder only puts in the HpMount - the shield bubble sur part.
No other hpids are in the single-part sur file. I just checked by making a single-part sur for my DevilRay.
Run your test again with GetCollisions.dll and let us see the text file that is generated.
-
Gisteron wrote:
with multi-part surs, is there a way to manually edit them to attach to a certain mesh part other than “Root”? where would that be? or to rob even more time from our programmers: is it a challenge to read out the name of the mesh part the tool is generating a sur part for and then add this as attachment reference instead of “Root”? would be good for e.g. animations of station (and docking ring and jumpgate) and warship bays/airlocks.This is what is being done by the Sur Exporter and Sur Builder and by the Sur Splicer, only the first part is attached to “Root”, the others are named after their cmp group. Or do you mean something else?
How would it be good for animations?
Gibbon: I’m testing your model now, it is generating the same hits as my model in GetCollisions.txt to the shield bubble (because HpMount and HpSHield01 are not present in the sur file - they use the same shield sur).
Here’s a sample:
00:12:30.489: idx = -2, end = 0x3709B90
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x0000000000:12:50.027: idx = -2, end = 0xA35730
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x0000000000:12:50.077: idx = -2, end = 0xA35730
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x0000000000:13:04.478: idx = -2, end = 0xA35730
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x0000000000:13:38.346: idx = -2, end = 0x2EBD404
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x0000000000:14:27.247: idx = -2, end = 0x2EBD230
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x00000000When the HpThrusterxx or HpCMxx is hit then it should crash…
And of course that all depends where the HPThrusterxx and HpCMxx are located, on my ships they are both prominent at the rear of the model.
If your models have them in protected places it is possible they will never be hit.
May be this is the real reason some of you didn’t have this problem yet.
-
Gibbon: Here it is, your gunship failed too. After almost 6 hours the thruster on one ship was eventually hit.
This is a gunship and there is more ship surface to hit, and the countermeasure and thruster are at the back, this is why it took so long:-
01:05:03.322: idx = -2, end = 0x36AAEB8
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x0000000001:05:03.543: idx = -2, end = 0x36AAEB8
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x0000000001:05:25.114: idx = -2, end = 0x36AAEB8
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x0000000001:06:23.718: idx = -2, end = 0xA35750
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x0000000001:07:36.493: idx = -2, end = 0xA35750
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x00000000–----->>-------
06:51:03.564: idx = -2, end = 0x2EBD184
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x0000000006:51:17.154: idx = -2, end = 0x2EBD150
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x0000000006:51:27.439: idx = -2, end = 0x2EBD150
object 1 = 2001 SHIPS\liberty\li_elite\li_elite_shield.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x0000000006:51:27.749: idx = -2, end = 0x2EBD150
object 1 = 2001 equipment\models\st\ku_thruster.3db
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x0000000006:51:27.789: idx = -1, end = 0x2EBD150
object 1 = crash!
object 2 = 0067
CRC 1 = 0x00000000
CRC 2 = 0x00000000So let’s not waste any more time. The problem exists and we know the fix.
Note:
These entries: SHIPS\liberty\li_elite\li_elite_shield.3db
are caused by the shield bubble (HpMount) missing from the sur file.
As Sur Builder puts in the HpMount (but only in single-part surs) these won’t be present in single-part surs but the others will.I’ve attached the whole GetCollisions.txt file for the Thomases here and you can get Gibbon’s superb gunship model in this thread.
I don’t care if you can’t get yours to fail. If you test long enough and in the right environment it will.
Every component listed by adoxa’s GetCollisions.dll needs to have a sur part in the sur file.
This includes any special-named equipment or weapon hardpoints that you want to make such as HpDogsKennelxx and HpMassCannonxx :-?
The good side is that you can now make those special hardpoint names and include them manually in the sur file.
A Nice Result overall!!
-
StarTrader wrote:
As for your problem, you didn’t give me enough info yet. Is it an FLServer.exe crash or a Freelancer.exe crash? Narrow down which model is causing it and try to isolate how - replace the fuses with standard ones one at a time.I mostly test in singleplayer, haven’t tried mp with that mod for quite some time.
Will try some isolating now (again). If anybody is interested, I could give you the files or parts of them. -
OK so it’s Freelancer.exe that is crashing. That’s not this sur problem.
Bad Surs usually crash FL when you launch, and sometimes when you destroy a ship using the bad sur.
Start a new thread so we keep this one clear for the sur tools, and let’s see if we can’t help you to find it between us. Upload the files you think may be causing it, zip them up.
-
I found another way, just have to test it further
1. Create the sur using the SUR Creator
2. Import the sur into MS
3. Import the model on top of that with the hardpoints (Delete the unnecessary one’s like HpPilot, HpCocpit, and Lights).
4. Delete the model leaving the sur and the hardpoints (If you have a multipart you need to find the part name for each part of the sur xxxxxx_lod1) and export it using shield bubble + disable mesh directx reduction
This has work well so far on smaller models (No console errors with both single part and multipart surs). I’ve also used this on my bigger ships with full success too (Full success meaning that it didn’t crash on takeoff and took damage without any shots going through the hull). Now it is time for stress testing and see if anything comes up in the GetCollisions and GetRoot. I’m writing from work so I hope I remembered everything.
-
Sur Creator? Never heard of it.
I’m guessing you mean LS’s Sur Builder?
Yep, that works as long as Sur Builder didn’t miss any parts, but unfortunately it often does.
I just do this:-
1. import the .cmp into MilkShape,
2. fix or regroup any groups I don’t like the look of,
3. use the Convex Tool to make sure all shapes can be generated easily,
4. fix and remake any bad shapes that are created,
5. delete the original model groups,
6. save the model as (ShipName)Surs.ms3d just in case it’s needed again, then
7. export the sur with the needed hardpoints using Sur Exporter v1.1 (it ignores any hardpoints it does not recognise in any case).As long as there are 18 or less parts, this way and your way are
both fine.Special-named hardpoints
If you have special named hardpoints, like HpCannon01, name them with standard names first otherwise they will not be exported, but don’t conflict with existing hardpoints. e.g. use:-HpWeapon101 etc. for guns,
HpTurret101 for small fighter turrets,
HpTurret_L1_101 etc for biggest battleship turrets,
HpTurret_L2_101 etc for the next size down,
HpTurret_L3_101 for the next size down again, and
HpTurret_L4_101 for the smallest of the big turrets,
HpShield101 etc for special-named shields and equipment hardpoints.Do this with all your special named weapon & equipment hardpoints.
These names produce different sur shapes, import the sur and check them out to see if it’s what you want.
Then after you export the sur, you need to open it in a hex editor, look for the hpid section, find the CRC’s of these (HpWeapon101 = E2912E17 - It must be reversed, so look for 172E91E2 in your hex editor) and replace them with yours - HpCannon01 = E77A39D1 so reversed = D1397AE7.
Remember:
When you export a whole model you MUST NOT add “_lod1” to the end of the sur part names because the exporter does this. You ONLY need to add “lod_1” to the name when you export single groups to stitch together with Sur Splicer, because the Sur Exporter does not add it - as there is only 1 group it will be named “root”. -
Sadly I have just confirmed that Sur Splicer ignores hardpoints and does not keep them.
Every sur part in the sur file has an hpid section, but the count field is 0.
So it seems that we can’t export non-wrapped surs with hardpoints.
Someone earler said that Sur Exporter knows about holes?
No it doesn’t, it covers all holes with the shrinkwrap.
-
Yes can of worms is right.
Gibbon - as you say your sur is not good too.
The one I made gets the shrinkwrap but I can fly through almost all parts of it with no collision detection. And then Freelancer.exe hung. So it’s unusable.
I spent the whole day today trying to export hardpoints with Sur Splicer and with Sur Exporter v1.1 on a big ship, my Brakiri Avioki with gaps everywhere - no go, it hung Freelaner.exe every time. The original sur which I made with Sur Splicer with no hardpoints a couple of years ago is fine, I can fly through almost all the gaps (not the rear body, I didn’t want to make that into 4 parts) and I collide with and can shoot and hit all body parts.
Just no danged way to add hardpoints.
-
As long as your hex editor can insert bytes, adding hpid is not all that difficult. Use surdump -ob to generate the offsets (only those names with two spaces are needed). Working backwards to preserve those offsets, go straight to EOF. Insert “hpid”, the number of hardpoints and the CRC of each. Go to offset+4 of the last group and add one to that byte. Go back to offset, insert “hpid”… Once done, run it through SurDump again to test it out.
-
@ST
I do actually have a working version of that sur, complete with holes that Bejaymac modified for me, although it’s based on that sur i uploaded.
What i was trying to show with that sur is that the sur exporter does recognise holes in models and doesn’t automatically shrinkwrap as you suggest.
-
Gibbon wrote:
That was me ST, about holes, so how do you explain this sur then? This has holes, look at the docking bays. Made using 1.1. No shrink wrapping in sight. It’s a uesless sur but that’s not the point here.Hi pal.
No, Sur Exporter does not know about (i.e. cannot make surs around) holes. I re-affirm this.
I just had a good look at your Galactica sur file. It’s a very nice sur by the way, could have been made by me - almost :D.
The docking bays on your Galactica are made in the same way I make mine - one piece for the floor, another piece for each wall, and on my models one piece for the ceiling. The Galactica model has 3 parts for each docking bay: the floor, and two sloping sidewalls which meet at the top.
I have several working surs with docking bays - my TCS Vesuvius, TCS Midway (2), Kilrathi Dreadnought, and Tigers Claw are made in this way. All sur parts are exported one at a time and then spliced with Sur Splicer. they all work very well. The only problem is making them within the 18 total group count, Sur Splicer removes this limit but the cmp exporter still has it. The manual way to splice cmp files solves this too.
Your Galactica sur has a Shield Bubble, not a shrink-wrap.
And I have just noticed that the outer bay wall sur parts are not convex, the inside walls are flexed inwards into the sur part, so that is one reason for the sur not working.
The other problem is that the shield bubble will not let a ship fly into it, so ships cannot dock on this model.
A shrink-wrap is just a skin-tight convex shape around all the component shapes, and covers all holes - it has to, it is a convex shroud around the whole model. The strange thing is you can fly into a hole through the shrink-wrap, since it seems that it is not meant to detect collisions, but you can also fly through most parts of the model too then, like floor, walls and ceiling, despite them having sur parts.
If you remember a long time ago Mirkha and CzW helped us on how to use the Boolean tool in 3DS Max to make a hole in a solid object and then make it into a sur? Well I did that with a solid sphere and “Bool’d” a “monolith” to cut a docking hangar in it. I exported that as a sur, with a Shrink Wrap - which on that model was another sphere close to the surface of the original, since the sphere is already convex, and it covered the bay entrance. It was so easy… and it worked!(?) But only slightly, because I could fly into it, and there was an initial collision with the ceiling - but not with the walls nor with the floor. And after the first collision, I could also fly through the ceiling until I exited from the model and re-entered it again, then this behaviour repeated.
So that was a shame, so near yet so far.
Believe me if I had found a way to make useable one-piece surs with holes I’d be using it. This is my 4th year of sur-apprenticeship!