public void load(DataInputStream dis) throws IOException {
    dis.readInt(); // name length
    this.name = dis.readUTF();

    dis.readInt(); // map_kdLength
    this.map_kd = dis.readUTF();

    if (parent.hasTexcoords() && map_kd.length() > 0) {
      parent.loadTexture(map_kd);
    }

    this.ka[0] = dis.readFloat();
    this.ka[1] = dis.readFloat();
    this.ka[2] = dis.readFloat();
    this.ka[3] = dis.readFloat();

    this.kd[0] = dis.readFloat();
    this.kd[1] = dis.readFloat();
    this.kd[2] = dis.readFloat();
    this.kd[3] = dis.readFloat();

    this.ks[0] = dis.readFloat();
    this.ks[1] = dis.readFloat();
    this.ks[2] = dis.readFloat();
    this.ks[3] = dis.readFloat();

    this.ns = dis.readFloat();
    this.illum = dis.readInt();
    this.d = dis.readFloat();
  }