CMP Import/export dll
-
There are different methods how you calculate the center point of a group.
Schmackbolzens method is calculating the center point by the dimensions of the object. You are calculating the center by the spread of all vertices.
-> Schmacki will write the exact problem and solution in a few minutes.Another problem: Your CMP Exporter also repositionates the Root mesh. I think some of the modelers, including me, are positioning their root meshes willfuly at another point than the exact caluclated mass center.
So please remove the adjustment of the rootSo far, your CMP importer and mainly the exporter are the greatest Iāve ever seen! With them modeling for Freelancer makes fun again!
-
What Skotty means is, that you use a different way to calculate the center. I would say you calculate the arithmetic average whereas you just should calculate the center of the bounding box. I have attached a screenshot from Skotty where you can see the problem. The gray mesh is the automatic centered multipart group by my obj -> sur converter and the colored one the one from your exporter. Since you use a different way to calculate the center they donāt overlap. This means that you would have to correct it either in your program or everyone will have to enter different center values into my converter which would be quite annoying I guess ^^.
P.S.: No, the new sur converter version is not released yet, Skotty has a prerelase version, which has some minor bugs leftā¦
Remember to click āview imageā or how your browser calls it since the image is cut thanks to this nice forum software ^^
-
@Schmackbolzen
Hi,I was just wondering, How did you calculate the bounding box?
I cycled through all the vertices of each part and took the two farthest away for each axis.Anyway, this dll uses the bounding box and doesnāt move the root mesh.
-
Thanks for the quick fix!
I just iterate through all vertices per group and look for the min and max values per axis. In the end you have 6 values (or 2 Vectors / Points) defining the bounding box. That should be the quickest way to do it. -
Perfect. Thanks P1p3r, the CMP Exporter exports my CMP now with perfect center coordinates. Schmackis SUR converter creates now in combination with your CMP exporter a really perfect ship.
Now the next and best generation of Freelancer ships can come! -
Amen!!
-
Geting a weird error when using this exporter seen here:
http://i113.photobucket.com/albums/n240/Alucard1_01/errordllexporter.png
Any ideas why itās missing parts of the words used?
-
I just remembered, this only occurs when you first use the exporter. It uses the last filename for the VMeshLibrary.lod then replaces it when a new filename is selected. But if there was no last filename, it cannot replace it. This should be fixed soon.
-
Your radius calculation is wrong. If I use a box with the size 80x80m, your radius is just 40, but it would need to be 69,28 or a bit bigger (tolerance value).
Schmackbolzen will write how to solve the problem via vector calculation.
-
The problem is that the .cmp disappears too early out of view. For a correct radius you can e.g. calculate the center of each bounding box axis, then get the distance from each value to the max value per axis and from that calculate the vector length which is your radius.
-
I not following you guys here. Whatās with the radius and why is it dissapearing too early. What is dissapearing too early?
The radius of an 80M x 80M box, is 40M.
I calculated the radius as the longest distance from the center of the box to the farthest axis.
So that a box thatās 80M long, 20M wide and 20M tall would have a radius of 40M. Thatās half of 80M. From the center of the longest distance.Maybe if you could send me a copy of your exporter I wuold have a better Idea of what I would have to change.
-
The radius in that case is sqrt(40Ā²+40Ā²+40Ā²)=69.282. Itās the length of the vector from center to the farthest corner.
-
The radius set in the CMP files are responsible for the drawing of a CMP(-part). If the radius of a part is to small, it will disappear from the view to early.
If you got ANY shape, you need to be sure that the sphere with your radius covers the whole shape.
All edges and corner points of a 80x80 box will be outside of a sphere with the radius 40, This sphere/radius just hits the outer surface of the box in just 1 point, nothing else. It will disappear to early.
You need to calculate the radius by doing the following:
The distance from the Center and the farthest corner point of the bounding box.And be sure to do this for every cmp part
-
Sorry, but Schmacki already wrote his example equationfor the vector you need.
You always need the longest vector from the center of the bounding box and set this value for the radius. -
To formulate it more in the mathematical sense:
center(min,max)=min + ((max - min) : 2);distance(min,max)=max-center(min,max)
radius(minx,miny,minz,maxx,maxy,maxz)=
sqrt(distance(minx,maxx)Ā²,distance(miny,maxy)Ā²,distance(minz,maxz)Ā²)
This is just what I wrote but this time in strict mathematical notation. ādistanceā is of course the distance from the center, I shortened the name to keep it readable. -
Iām sorry but I am unable to get either to work. Using 1.7.1 and 1.7.2, not wanting to mess with the cmp export 0.2 (which works just fine) in my 1.8.4. What am I doing wrong that your CMP import/export isnāt doing right for me?
Fus
-
Besides the radius problem of the CMP and itās parts I found another problem a lot of people will maybe get:
If you want to create LOD models, your LOD meshes need to have the same center point like the original ones.
The problem: Because of the poly reduction, the geometry and so the bounding box can change. Your exporter now generates another center point for the same shippart. In fact this means: LOD models can get big gaps between its parts because the original āhighā poly mesh and the LOD mesh have different center points.Another problem is animating the CMP meshes: For rotating animations you need to center the CMP part directly in Milshape where you want to have its rotation axis. Your program in fact always overrides this center point (the root in this case) with its own, bounding box based center point.
Both problems need the same solution:
You have to include a possible manual override for the center points of each CMP group your exporter wants to create.
By this you can, for example with the LODs, always give the LOD parts the same center like the FIX has, so they will be always at the same position with their center.Oh and, why didnt you reacted to all our requests (some of them are really important for a perfect CMP exporter) in the last weeks? You are some kind of personated hope for a working CMP plugin So please please keep working for the whole communiy and its future.