Jump to content

Broken Sketchup 8 = Expected Behavior?


DanielRavenNest Noe
 Share

You are about to reply to a thread that has been inactive for 3988 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

I filed this JIRA issue because SketchUp 8 does not generate single models when you use more than one "surface" (texturable submesh) and upload to SL: https://jira.secondlife.com/browse/CTS-602

Today it was marked "Expected Behavior" and "Not Applicable". This baffles me. Imported models ending up as separated pieces is expected behavior?

Does Linden Lab not want the current version of the easiest to learn free 3D program to be used residents?  Since using outside tools are required to make the mesh project succeed, perhaps you need to look beyond your own internal software development cubicle into the wider world, where software that does not play nice with other software is of no use.  I cannot tell whether the breakage is on Google's side or Linden Lab's side, but it ought to be fixed, or you are condemning people to learn Blender, a fate wose than death. :smileywink: (or use an outdated version of SketchUp - v7.0.10247 works, just not the current v8.0)

A comment saying something like "Google broke their model export and it no longer generates a valid .dae" would be understandable, as would a request for copies of the .dae files, which I will be happy to supply. But I truly don't understand the resolution on this issue.

Link to comment
Share on other sites

It is expected Behavior for Sketchup 8: The reason why it is so easy to use is because the models tend to have problems: instead the models from sketchup should be optimized and "corrected" after export from Sketchup, using another suite.

Sketchup 8 by default exports lots of submeshes, possibly todo with the "generally easy" modeling method, or just a botched collada export. But Generally Sketchup is not a suggested modeling for creating models straight for game engines.

In my humble opinion, this issue should be done through Google instead of Linden Labs (its their software, after all):

On the other hand, mesh developers may also need to have multiple submeshes, to save upload timethus -insl- fix could  indeed break this time saving method.

Link to comment
Share on other sites

It is hard to say what Linden Lab intends when it comes to mesh. I think they have a very strong emphasis on providing a way for more professional moders to contribute to SL.

None of the modeling programs I know of have a great Collada export. Blender 2.57 does not export rigged mesh and 2.49 does. I think I've seen some Maya and Max users write about having to tweeak the Collada files to get them to work as they intended.

I find it odd that as popular as Collada seems to be it does not have better support. But, it is what it is. I understand Google Summer Code will be working on Collada as a project. I expect it to get better. Those working on Blender have been improving its Collada ex/import.

So... I don't see this as a matter of the Lab ignoring Sketch Up as it is they are conforming to the Collada standard. A problem with Sketch Up is not going to get special treatment from the Lab. So, just as I have to work around Blender problems you'll have to learn to deal with Sketch Up problems.

Link to comment
Share on other sites

>It is hard to say what Linden Lab intends when it comes to mesh. 

No, it's easy to say that they are trying to delay it as long as possible.

As eager as some people are for mesh, LL has by now realized that it's going to be much more disruptive than they initially imagined.

They may even be looking for excuses not to release it at all.

Link to comment
Share on other sites

I'm not sure why you expected a different answer to the jira... the problem is with sketchup 8's export which breaks standard. it's not about limiting options, it's about sticking with what it's supposed to be doing so that it remains standards compliant with everything else... the importer is just doing what it's told.

if tomorrow photoshop put out a new edition that changed the file format for something like gif or jpeg or tga, and suddenly the images you create didn't work on the web or in sl, etc but only on computers with PS's new custome decoding library, whose fault is it that it's broken?

I will agree with you on one point, it would be better if the current version worked for SL, but thats up to google, not LL

  • Like 1
Link to comment
Share on other sites

Both SketchUp 7.0 and SketchUp 8 identify within the Collada .dae files they generate at the top of the file that it is Collada version 1.4.1

So we have one of two cases:

(1) SketchUp 8 is creating an invalid file which does not meet the 1.4.1 standard, in which case it's their fault it is not working

(2) SketchUp 8 is creating a valid Collada 1.4.1 file, but the SL importer cannot read it properly, in which case it is LL fault.

I am not a good enough Collada guru to tell the difference.  Presumably someone at LL is, since they had to write the importer.  If you have evidence Google is breaking the Collada implementation, I will accept that, but right now all I see is the tag at the top of both files saying they use the same version.

Link to comment
Share on other sites

So we have one of two cases:

(1) SketchUp 8 is creating an invalid file which does not meet the 1.4.1 standard, in which case it's their fault it is not working

(2) SketchUp 8 is creating a valid Collada 1.4.1 file, but the SL importer cannot read it properly, in which case it is LL fault.

----------------------------------

Both are untrue. :matte-motes-shocked:

The Sketchup exporter produces a valid Collada file. However, it treats each diferently textured set of faces as a separate mesh. The SL importer recognises this correctly and produces a separate mesh for each. The exporter fails to use the meshanism provided by Collada for specifying a different material for diffrerent faces of the same mesh.It is valid, but does not represent what you expect it to.

Some details...

The meaning of the <geometry> tag is clear: COLLADA – Digital Asset Schema Release 1.4.1, 2nd Edition [5-34]

"The <geometry> element contains a declaration of a mesh, convex mesh, or spline."

Now the Sketchup export has multiple <geometry> tags, one for each differently textured part, that are therefore separate meshes. Within this tag, there is a single <triangles> tag that defines the mesh in combination with other sections. The <triangles> tag has just a single "material" attribute that specifies the material = SL-face/texturable-unit.

In contrast, a Blender export of the same thing would have one <geometry > tag containing several <triangles> tags, each of which specifies a different "material" attribute specifyng a different material = SL-face/texturable-unit for each of the defined subsets of triangles comprising the whole mesh. This produces the single mesh with separately textured faces after upload. Blender can still use multiple geometries to specify multiple meshes, each with multiple materials, if you want it to.

So Sketchup forgoes the use of multiple triangle lists and uses separate meshes instead, when you use different textures. This means it cannot discriminate between multiplicity of materials and multiplicity of meshes. I would consider this an unsaticfactory failing of Sketchup to use the full range of facilities of  Collada, and I don't see what SL can or should do about it. Whether it is a necessary consequence of the internal data structures of Sketchup, or merely a limitation of the exporter, I don't know. The exported file is not invalid Collada, but is a compromised interpretation of it.

There is a simple route to overcoming this available free to Sketchup users (at least for models intended to be single meshes). Use Blender to import the dae, join the separate objects and re-export. This preserves the material-face associations and imports as a single object. It will not work, however, if tere are more than 8 materials in the model. It requires learning only the minutest part of the Blender UI, and it is free.

Link to comment
Share on other sites


Drongle McMahon wrote:

There is a simple route to overcoming this available free to Sketchup users (at least for models intended to be single meshes). Use Blender to import the dae, join the separate objects and re-export. This preserves the material-face associations and imports as a single object. It will not work, however, if tere are more than 8 materials in the model. It requires learning only the minutest part of the Blender UI, and it is free.

Using Blender may seem simple to you and I, but trust me, to a newbie who is just getting into making models Sketchup is friendly looking, and Blender is dark and scary.  For now, I will recommend new people use Sketchup 7.0.10247, since that exports properly with no fiddling. Whatever differences there are between 7.0 and 8.0 will not be relevant.  If they are getting to need advanced stuff, they will move to Blender or some other 3D program with more features.

Link to comment
Share on other sites

the basis of the problem is that the collada format itself is to blame. both syntax's are correct, but they do different things. There "SHOULD" be settings to export them in either fashion, but google choose to break expectation... it was unfair of me to say they broke the format.

the comparison would be more like everyone having previously exporting PNG's to as flat textures with no alpha, and alpha never having been mentioned even though it was theoretically possible... then along come someone who automaticaly exports images with alpha every time (hmmm this reminds me of the PS7? bug)... the results in applications that use pngs suddenly become unexpected (though not broken) because they expect a certain type of png file.... both are useful, but it wasn't made clear what was being expected by the importer or what was being created by the exporter.

the solution of course is to document the importer expectation, and provide user options on the exporter, just as is done in paint programs... LL has (limitedly) done their part, it's up to exporter apps to either support user changes or at least document the format they use to export.

Link to comment
Share on other sites

I did some more research on Collada.  There is a conformance test suite hosted by the Khronos group (who own the Collada spec and API) :Khronos Group

Unfortunately zero companies / 3D programs are listed as adopting / conforming products.  That does not mean they don't work at all, just that they have not been fully tested and validated by Khronos.

There is also a Collada coherency test 1.3 program you can download.  I tested my misbehaving Sketchup 8 output, and it passed with no errors.

The situation we have with 3D software is every program has it's own native model file format (including Second Life once it's uploaded).  Collada allows the *possiblity* of exchanging models between programs by creating a common language (the XML schema), but you can still have "translation errors" between what one program says (exports), and another program hears (imports).

For example, going from 3ds Max to Blue Mars, the OpenCollada exporter works, and Autodesk Collada exporter does not.  Going from 3ds Max to Second Life the exact opposite is true - Autodesk works, OpenCollada does not.  The situation is much better than 5 years ago, when you could only convert files with great difficulty, but we are not yet at the point where easy conversion between every 3D program is possible.  All we can do for now is document what works and what does not, and what settings/tweaks to use for any given program.

 

Link to comment
Share on other sites

  • 3 months later...

I cannot get Sketchup 8 to play well with SL.  No matter what I try, even post processing with blender, and utilizing the triangulateFaces plugin for sketchup, the distance at which the object breaks down is unacceptably short.  A simple chair breaks down in just a couple of meters distance.  SL and Sketchup are two prominent players and it would benefit everyone if they played well with each other.

Link to comment
Share on other sites

Martie, I've been recently playing around with Sketchup 8.  I included a snapshot of a few things I've played around with that uploaded well after tweaking a bit in Blender.

What I found works well is to use the obj exporter plug in for Sketchup http://forums.sketchucation.com/viewtopic.php?f=323&t=33448 to take the model into Blender.  I then immediately  "remove doubles" and reset the normals on the imported mesh.  Also in I change triangles to quads in blender to review the mesh for things that need to be fixed and let the Collada export from Blender change everything back to triangles.  I'm not having the same problems you are having with the lod's breaking down. These and a few other models I've made have held up quite nicely at a distance.

Sketchup8windows.jpg

Link to comment
Share on other sites

Nacy, Thank you for the help, but unfortunately, I installed the plugin, exported it as a .obj file, uploaded it to blender, removed doubles, then recalculated normals, changed triangles to quads, exported it as a collada file, uploaded it to SL, used the auto generate function, and had the same outcome...very short draw distance...in the range of 3 meters before the object broke down.  If you have any quick suggestions without using much of your valuable time, let me know.  Otherwise I will keep toying with it and checking the forums.  No hurries, no worries here with SL, just fun. Martie

Link to comment
Share on other sites

I'm playing with it right now.  I'll let you know if I run into any of the same problems. I wonder though, if you just need to re-adjust the draw distance for your viewer.   Perhaps you've loaded a new version and forgot to set it up to 4 minimum in the render volume lod thingy..or whatever it's called.

Link to comment
Share on other sites

The distances where the LOD switches happen are dependent on the size of the mesh and the setting of a parameter called renderVolumeLODFactor. This parameter can be inspected and set from the Advanced->Show Debug Settings menu and typing its name in the dialog that appears. It is also set when you move the Object detail slider in the graphics options, but that allows a maximum setting of only 2.0.

The size measure used is the radius of the mesh, which is the length of the diagonal from the center to a corner of the bounding box. This can be calculated as sqrt(x*x + y*y + z*z)/2 where x,y and z are the dimensions of the mesh prim reported in the edit dialog. If we call this radius R and the renderVolumeLODFactor F, then the switch distances are F*R/0.24, F*R/0.06 and F*R/0.03. Simply stated, the first switch happens at about 4*F*R meters, and the others at 4 and 8 times that distance.

This applies independently to each mesh within a linkset. So if you have a chair that is just one mesh (1 prim in the edit dialog), and it is 1x1x2 m, and F is 1.0,then the first LOD switch is at about 5 meters. On the other hand, if the chair is a linkset with the biggest piece a 1m long bar, all the pieces would have switched at 2 meters viewing distance. The smaller pieces would switch at even closer distances. The uncoordinated and closer switching would cause any ditsortions in the LOD meshes to be evident much closer than with the chair in one piece.

Now Sketchup has a tendency to make models as collections of many small meshes which upload as a linkset. If this is happening with your chair, that would explain the earlier than expected appearance of distortions as you move away. This could be overcome by joining the pieces into one mesh (in Blender or something else).

Alternatively, and effective even if it is already one mesh, you could simply use the same dae file in the medium LOD slot in the uploader that you used in the high LOD slot (by opening the dialog with it). In the development viewer, you can directly tell it to use the next higher LOD mesh. This will make the first apparent LOD switch four times further away. The alternatives will have different effects on PE(LI), but these are difficult to predict. 

 

  • Like 1
Link to comment
Share on other sites

wow, very informational exposition, from which I gained some insight, although I have not the background for full understanding.  I think at this point I have done the steps necessary to turn the model into one mesh, and it my be that my problem is due to my viewer being set improperly, although I have explored various viewer options in trying to solve the problem. There may be an LOD setting I am missing in the new viewer. It would seem that the default setting should appropriatly upload common meshes.

Have fun...

Martie

 

Link to comment
Share on other sites

Now I'm being forced (quite against my will) to relearn math :matte-motes-silly:

Thanks for the excellent explanation Drongle..that went into my notes and the link to this thread on my notecards for inquiring sandbox folks.

Sketch up is fun to use and because of this it's deceptive.  It's interface is bright and cheerful and the tools are somewhat intuitive, but there's alot of fussing needed to convert the results into something worth uploading into SL.  Understandably, SU exists for it's own stand-alone purposes, its not designed to be general 3d modeler I don't think, like maya or blender, etc. (although I reserve the right to be wrong here).  It's quite a happy thing that these meshes can be brought out of SU and into SL even with the extra work.

Today I noticed in addition to merging all duplicated verts, and flipping normals (these often needed to be done by hand individually), making usable uvs and the general checking of the mesh's integrity, you should also check for non-manifold geometry (ctl shift alt M) and delete these faces, and blender also has a selection for inner faces, those should be checked and removed also.

In the end it might be just as easy to do the work in Blender, or Modo, but for quick sketching out a concept it's a terrific tool.

Link to comment
Share on other sites

  • 4 weeks later...

You can use Sketchup v 8, it's collada will upload this morning, but for the reasons below I would export to obj, then use MeshLab to convert the obj file to collada.

Both mesh below were uploaded this morning. The one on the left was a Sketchup v 8 exported collada (7 prims, 5 prim equivalent, 5.2 physical weight, 324 render cost). The one on the right was the same model exported as obj then converted using MeshLab to collada (1 prim, 3 prim equivalent, 3.0 physical weight, 55 render cost). There's no curved surface distortion  and the cylinder and the connecting surface align on the right.  Also note it saves you 6 prims, 2 prim equivalent, 1.8 physical weight, and 269 render cost.

test_001-1.jpg

 

Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 3988 days.

Please take a moment to consider if this thread is worth bumping.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...