sketchucation logo sketchucation
    • Login
    โ„น๏ธ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    [Plugin]Export Collada with texture names 1.2b [30/9/11]

    Scheduled Pinned Locked Moved Plugins
    38 Posts 15 Posters 46.0k Views 15 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • D Offline
      driven
      last edited by

      Error; #<NoMethodError; private method `gsub' called for nil;NilClass>
      /Library/Application Support/Google SketchUp 8/SketchUp/Plugins/ColladaWithTextureNames.rb;66;in `run'
      /Library/Application Support/Google SketchUp 8/SketchUp/Plugins/ColladaWithTextureNames.rb;140
      

      moding line 66 gets rid of that and it runs, ref_dir = "#{( ENV['TMPDIR'] || ENV['TMP'] || ENV['TEMP'] ).gsub(/\\/,'/')}/skp_cwtn"

      however, it's not clearing the temp directory so on second run I get.

       Error; #<Errno;;ENOTEMPTY; Directory not empty - /var/folders/lN/lNON23AjHxezeYON7yETPU+++TI/-Tmp-//skp_cwtn>
      /Library/Application Support/Google SketchUp 8/SketchUp/Plugins/ColladaWithTextureNames.rb;72;in `delete'
      /Library/Application Support/Google SketchUp 8/SketchUp/Plugins/ColladaWithTextureNames.rb;72;in `run'
      /Library/Application Support/Google SketchUp 8/SketchUp/Plugins/ColladaWithTextureNames.rb;140
      

      but it does make the files... even though showing these errors.
      on re-import some of the faces have been reversed and some of the materials only show up after draw event...

      I hadn't added require 'sketchup' yet, but I think it's mainly a path issue on mac...
      john

      learn from the mistakes of others, you may not live long enough to make them all yourself...

      1 Reply Last reply Reply Quote 0
      • TIGT Offline
        TIG Moderator
        last edited by

        The last trap sorts out PC and MAC variants...
        The bald Dir.delete(ref_dir)
        WILL fail IF the directory contains files... so use
        Dir.entries(ref_dir).each{|f| next if f=='.' or f=='..' File.delete(File.join(ref_dir, f)) }if Dir.entries(ref_dir)[2] Dir.delete(ref_dir)
        This WILL delete any folder as it 'empties' it first...
        EDIT: typo fixed ๐Ÿ˜ฎ

        TIG

        1 Reply Last reply Reply Quote 0
        • D Offline
          driven
          last edited by

          @TIG,

          I get : undefined methodDir'` with that?

          john

          learn from the mistakes of others, you may not live long enough to make them all yourself...

          1 Reply Last reply Reply Quote 0
          • D Offline
            driven
            last edited by

            ...and something else I find odd, a new Material folder was created and populated with materials, but none of these are in the 'undeleted' tmp Dir.

            To clarify:
            If I remove the 'tmp' Dir from the system. Start SU, open a drawing and RC, and then use this plugin.

            I get a .dae and a populated Materials folder and I also have a new tmp Dir with the same materials inside, and the no method error.

            if I then open a second drawing and use this plugin again I get another .dae and another populated Materials folder, bur the tmp Dir does not add these new materials and I get another no method error for Dir.

            I don't understand....

            john

            learn from the mistakes of others, you may not live long enough to make them all yourself...

            1 Reply Last reply Reply Quote 0
            • A Offline
              Aerilius
              last edited by

              I fixed all issues above (hope now it's right).
              I also added that the plugin prefers the material's screen name as long as it's not generic.
              This time I must have forgotten the require Sketchup. Thanks to all for the tips.

              @driven: It works with
              Dir.foreach(d){|f| }
              and
              Dir.entries(d)[2]

              1 Reply Last reply Reply Quote 0
              • McGyverM Offline
                McGyver
                last edited by

                It works now, but when I checked the material names after importing them in Blender and Poser they are being renamed again.
                There are no other plugins loaded into SU8... I just downloaded 8 and this is the first Ruby I added.


                Picture 1.jpg

                [Visit My ShareCG Freebie Gallery](http://www.ShareCG.com/pf/full_uploads.php?pf_user_name)

                1 Reply Last reply Reply Quote 0
                • TIGT Offline
                  TIG Moderator
                  last edited by

                  @driven said:

                  @TIG,

                  I get : undefined methodDir'` with that?

                  john
                  Sorry, stupid typo - fixed original so as not to confuse latecomers to the party ๐Ÿ˜‰

                  TIG

                  1 Reply Last reply Reply Quote 0
                  • M Offline
                    Morten
                    last edited by

                    Excellent plugin (and initiative), Aerilius!

                    There seems to be a small problem with the texture paths though:

                    <init_from>**Boxes_MaterialTest/**C:/Users/ABC/Desktop/Boxes_MaterialTest/_Asphalt_Stamped_Brick_1.jpg</init_from>

                    As you can see it seems to add the name of the exported DAE file to the texture path. Once I've removed that I can easily import the DAE file with textures in Lumion ๐Ÿ‘

                    1 Reply Last reply Reply Quote 0
                    • D Offline
                      driven
                      last edited by

                      @unknownuser said:

                      Once I've removed that I can easily import the DAE file with textures in Lumion :thumb:

                      the folder does stop all the texture being scattered over you desktop, so maybe putting the dae file into it programatically would be better...

                      john

                      learn from the mistakes of others, you may not live long enough to make them all yourself...

                      1 Reply Last reply Reply Quote 0
                      • TIGT Offline
                        TIG Moderator
                        last edited by

                        <init_from>daetest/C:/Users/TIG/Desktop/daetest/Palm14x.png</init_from>
                        should be either
                        <init_from>C:/Users/TIG/Desktop/daetest/Palm14x.png</init_from>
                        or for a [better] more general solution where the dae has its images in a folder 'kept with it' even when moved
                        <init_from>daetest/Palm14x.png</init_from>
                        The code is readily tweaked thus
                        fileNames.each{|old,new| colladaContent.gsub!(old,new) **colladaContent.gsub!(/#{dir+'/'}/,'')** } to remove the unneeded path...

                        ๐Ÿ˜’

                        TIG

                        1 Reply Last reply Reply Quote 0
                        • M Offline
                          Morten
                          last edited by

                          Thanks for that, TIG - the textures work great now without the need to manually edit the paths!

                          Any idea how to preserve the original SketchUp material names in the DAE file?

                          1 Reply Last reply Reply Quote 0
                          • A Offline
                            Aerilius
                            last edited by

                            @morten said:

                            Any idea how to preserve the original material names in the DAE file?

                            That's what I've been working on (while I hadn't read all new posts here). I've also found the mistake myself and fixed it (I had mixed up the file base name and full path).
                            So now the plugin not only replaces texture file names, but also the material's screen names. It wasn't simple because collada has several different material names (<material>, <instance_material>) that are scattered over the whole file.

                            @driven said:

                            maybe putting the dae file into it programatically would be better

                            So you mean to put the collada file into the same folder where the textures are? I understand how that would be useful, for now I did only modify the contents of the dae and kept the file structure how SketchUp produced it.

                            1 Reply Last reply Reply Quote 0
                            • GaieusG Offline
                              Gaieus
                              last edited by

                              @aerilius said:

                              So you mean to put the collada file into the same folder where the textures are? I understand how that would be useful, for now I did only modify the contents of the dae and kept the file structure how SketchUp produced it.

                              Indeed it could be useful however note that it would be rather unusual. Most of the exporting packages I know place the materials into a subfolder under where the model file is. Would it not cause confusion rather than ease of use? When exporting, most (experienced) users create a folder to collect all exported files and subfolders anyway.

                              Gai...

                              1 Reply Last reply Reply Quote 0
                              • M Offline
                                Morten
                                last edited by

                                @aerilius said:

                                I've also found the mistake myself and fixed it (I had mixed up the file base name and full path). So now the plugin not only replaces texture file names, but also the material's screen names.

                                Hmm, after replacing your Ruby script with the latest version, the imported DAE object appears without textures in both Blender and Lumion.

                                I'm testing a simple box with 1 brick material + 1 default white material on the inside of the box, and as far as I can tell, there's still a slight discrepancy between the material names throughout the DAE file:

                                <instance_material symbol="[Brick_Rough_Tan]" target="#ID5">
                                <instance_material symbol="Material3" target="#ID15">
                                

                                ...

                                <triangles count="12" material="Material2">
                                <triangles count="12" material="Material3">
                                

                                The texture re-appears if I replace "Material2" with "[Brick_Rough_Tan]", so it's almost working.

                                1 Reply Last reply Reply Quote 0
                                • TIGT Offline
                                  TIG Moderator
                                  last edited by

                                  I too have noticed this BUT the SKP dae-importer works just fine ๐Ÿ˜• ๐Ÿ˜ฒ
                                  Perhaps these other apps need the image files to be with the dae - but the normal SKP dae-exporter version writes to a similar textures subfolder too ? ๐Ÿ˜’

                                  I have also played around with trying to adjust the material's names in the xml - you can convolutedly connect the textures to the materials and thereby get the real material's name... BUT changing them in the xml [manually] seems to do nothing because when you import the materials they are still called '<auto>1' etc anyway ๐Ÿ˜•

                                  TIG

                                  1 Reply Last reply Reply Quote 0
                                  • pep75P Offline
                                    pep75
                                    last edited by

                                    F I N A L L Y !!!!!!!!!!!!!! ๐Ÿ˜ ๐Ÿ˜ ๐Ÿ‘ ๐Ÿ‘

                                    I LOVE YOU!

                                    1 Reply Last reply Reply Quote 0
                                    • pep75P Offline
                                      pep75
                                      last edited by

                                      mmm....the love is over.....it doesn't do anything! Is it working? I'm importing the Collada-file into Cinema4d but I just got the "normal" material names...... ๐Ÿ˜ข

                                      1 Reply Last reply Reply Quote 0
                                      • GaieusG Offline
                                        Gaieus
                                        last edited by

                                        What do you mean by "normal" materials names? Texture0, texture1 etc.?
                                        Are you using this exporter? (File > "Export collada with texture names" and not File > Export > 3D...)?

                                        Gai...

                                        1 Reply Last reply Reply Quote 0
                                        • pep75P Offline
                                          pep75
                                          last edited by

                                          Hey Gaius,

                                          In Cinema4D I normally get "Material 1, Material 2, etc" instead of the material names I use in SketchUp. When I use the collada-plugin (file > export collada with material names) it really doesn't export it with the material names. I'm working with Windows and version 8...mmm

                                          grtzz
                                          Pep

                                          1 Reply Last reply Reply Quote 0
                                          • TIGT Offline
                                            TIG Moderator
                                            last edited by

                                            We can't see how to rename 'Materials' in a DAE file.
                                            We can rename their 'Texture' files however.
                                            SO depending on the app that you import into - all materials will become something like material0, material1 etc, or in a SKP <auto>1 etc.
                                            Assigning a name to a material in the DAE is simply ignored and the app's imported materials are named using their simple numerical order in the DAE file.
                                            However, if the material has a texture many apps will list that against the material, so you can then spot it by that image-name IF you've used this exporter-tool and had used sensible image names for textured-materials. With the native DAE exporter material1 will have a texture called perhaps texture1.png etc... but at least this tools gives material1 with ' brick_666.png'...

                                            TIG

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • First post
                                              Last post
                                            Buy SketchPlus
                                            Buy SUbD
                                            Buy WrapR
                                            Buy eBook
                                            Buy Modelur
                                            Buy Vertex Tools
                                            Buy SketchCuisine
                                            Buy FormFonts

                                            Advertisement