Obj file with colors



  • Hello, as on my workflow I'm using obj files where I have groups (facets) that I colored, I was wondering if it could be done with jcsad 2. I didn't realize that immediately, but obj require handle groups by creating an array instead of a sole polyhedron, so it was not hard to do. For the moment I read the groups colors by hand, but they are into the companion file .mtl and could be fetched (I suppose it's for each group on 'kd' entry. Anyway that's already very nice.

    const jscad = require('@jscad/modeling')
    const { colors } = jscad
    const { colorize } = colors
    
    //const obj = require('./Gargouille692.obj')
    const obj = require('./6ZonesMat.obj')
    
    const main = () => {
      let cols = [
      [0,153,0],
      [0,153,255],
      [153,214,255],
      [163,102,0],
      [163,254,102],
      [254,204,255],
      [255,255,1]
      ].map(x=> x.map(y => y/255))
      
      let r = obj.map((x, index)=> colorize(cols[index], x))
      
      return r
    }
    
    module.exports = { main }
    

    Capture d’écran de 2020-09-17 10-30-47.png



  • @z3dev There's one thing that still makes me use obj from my obj2jscad.js. It is that the deserialized obj loses the polygon vertices list and it needs to be rebuild from the geometries, unless I didn'k look at the right place. But as 99 % of the time the user won't use those data, I understand that the deserializer don't keep track of them.



  • That's nice to see such feature, it works fine...
    Capture d’écran de 2021-04-07 20-50-25.png



  • @gilboonet sorry for the late reply. there was a change to the OBJ deserializer (import) to translate the 'material' name to an internal color specification. So, if the OBJ file has several groups (materials/colors) then result will have several colors.

    https://github.com/jscad/OpenJSCAD.org/tree/V2/packages/io/obj-deserializer


Log in to reply