tiny_obj 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 43c1c1c3d8ce4bc0609cb5311bbef76f77ba09b44620d8e3e50f60c82d0abc48
4
- data.tar.gz: d8043f9c0249a92114b61dddd5f66b961c24ee391e612b41fdb394e5a7716506
3
+ metadata.gz: 509d72ffa20f965c025d7c3a3526ebd37d70bd4c658287745e63524798dd6f57
4
+ data.tar.gz: 6de83d9a0b674e1adfe3eb14e7d8db3357a8adafa6c2385442c6e14c6adc53a7
5
5
  SHA512:
6
- metadata.gz: 1217901dc2bb0e5d6ba710d1cc46fdad3de23d720a441c7537c33c07f97bb16e5fbf1a5ddca6c439bc35bc2f6647c1558e1125bfdc32512914bd6abe8b97859f
7
- data.tar.gz: d55d2743baa53fc88f14f4d15609c6e8782280728d369f00495c5c77520052a617ea3f68647f1d96e5fd90c09e7dae36776a8c5f0f7a61f927c0bd55c11973dd
6
+ metadata.gz: 488dd94ca30b252504eb4ea4897d7af26fec8c46990caae26ab183264cc7f938e512710437eba1b0ba38cf16acf6c1271fd292427da5f7d2ed990deac91f13db
7
+ data.tar.gz: '09008e7cae84b20138cb7304090f95b40ff131f63d0df73c0fe4ce731563ff835234ec543a6b02b55dc9378d81742ad9616b6664aa8b786ae79b074b9742fc51'
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tiny_obj (0.2.3)
4
+ tiny_obj (0.2.4)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -23,6 +23,7 @@ THE SOFTWARE.
23
23
  */
24
24
 
25
25
  //
26
+ // version 1.4.0 : Modifed ParseTextureNameAndOption API
26
27
  // version 1.3.1 : Make ParseTextureNameAndOption API public
27
28
  // version 1.3.0 : Separate warning and error message(breaking API of LoadObj)
28
29
  // version 1.2.3 : Added color space extension('-colorspace') to tex opts.
@@ -158,8 +159,8 @@ typedef struct {
158
159
  real_t bump_multiplier; // -bm (for bump maps only, default 1.0)
159
160
 
160
161
  // extension
161
- std::string colorspace; // Explicitly specify color space of stored value.
162
- // Usually `sRGB` or `linear` (default empty).
162
+ std::string colorspace; // Explicitly specify color space of stored texel
163
+ // value. Usually `sRGB` or `linear` (default empty).
163
164
  } texture_option_t;
164
165
 
165
166
  typedef struct {
@@ -388,17 +389,15 @@ void LoadMtl(std::map<std::string, int> *material_map,
388
389
  std::string *warning, std::string *err);
389
390
 
390
391
  ///
391
- /// Parse texture name and texture option for custom texture parameter through material::unknown_parameter
392
+ /// Parse texture name and texture option for custom texture parameter through
393
+ /// material::unknown_parameter
392
394
  ///
393
395
  /// @param[out] texname Parsed texture name
394
396
  /// @param[out] texopt Parsed texopt
395
397
  /// @param[in] linebuf Input string
396
- /// @param[in] is_bump Is this texture bump/normal?
397
398
  ///
398
- bool ParseTextureNameAndOption(std::string *texname,
399
- texture_option_t *texopt,
400
- const char *linebuf,
401
- const bool is_bump);
399
+ bool ParseTextureNameAndOption(std::string *texname, texture_option_t *texopt,
400
+ const char *linebuf);
402
401
  } // namespace tinyobj
403
402
 
404
403
  #endif // TINY_OBJ_LOADER_H_
@@ -904,37 +903,12 @@ static vertex_index_t parseRawTriple(const char **token) {
904
903
  return vi;
905
904
  }
906
905
 
907
- bool ParseTextureNameAndOption(std::string *texname,
908
- texture_option_t *texopt,
909
- const char *linebuf, const bool is_bump) {
906
+ bool ParseTextureNameAndOption(std::string *texname, texture_option_t *texopt,
907
+ const char *linebuf) {
910
908
  // @todo { write more robust lexer and parser. }
911
909
  bool found_texname = false;
912
910
  std::string texture_name;
913
911
 
914
- // Fill with default value for texopt.
915
- if (is_bump) {
916
- texopt->imfchan = 'l';
917
- } else {
918
- texopt->imfchan = 'm';
919
- }
920
- texopt->bump_multiplier = static_cast<real_t>(1.0);
921
- texopt->clamp = false;
922
- texopt->blendu = true;
923
- texopt->blendv = true;
924
- texopt->sharpness = static_cast<real_t>(1.0);
925
- texopt->brightness = static_cast<real_t>(0.0);
926
- texopt->contrast = static_cast<real_t>(1.0);
927
- texopt->origin_offset[0] = static_cast<real_t>(0.0);
928
- texopt->origin_offset[1] = static_cast<real_t>(0.0);
929
- texopt->origin_offset[2] = static_cast<real_t>(0.0);
930
- texopt->scale[0] = static_cast<real_t>(1.0);
931
- texopt->scale[1] = static_cast<real_t>(1.0);
932
- texopt->scale[2] = static_cast<real_t>(1.0);
933
- texopt->turbulence[0] = static_cast<real_t>(0.0);
934
- texopt->turbulence[1] = static_cast<real_t>(0.0);
935
- texopt->turbulence[2] = static_cast<real_t>(0.0);
936
- texopt->type = TEXTURE_TYPE_NONE;
937
-
938
912
  const char *token = linebuf; // Assume line ends with NULL
939
913
 
940
914
  while (!IS_NEW_LINE((*token))) {
@@ -1011,7 +985,46 @@ bool ParseTextureNameAndOption(std::string *texname,
1011
985
  }
1012
986
  }
1013
987
 
988
+ static void InitTexOpt(texture_option_t *texopt, const bool is_bump) {
989
+ if (is_bump) {
990
+ texopt->imfchan = 'l';
991
+ } else {
992
+ texopt->imfchan = 'm';
993
+ }
994
+ texopt->bump_multiplier = static_cast<real_t>(1.0);
995
+ texopt->clamp = false;
996
+ texopt->blendu = true;
997
+ texopt->blendv = true;
998
+ texopt->sharpness = static_cast<real_t>(1.0);
999
+ texopt->brightness = static_cast<real_t>(0.0);
1000
+ texopt->contrast = static_cast<real_t>(1.0);
1001
+ texopt->origin_offset[0] = static_cast<real_t>(0.0);
1002
+ texopt->origin_offset[1] = static_cast<real_t>(0.0);
1003
+ texopt->origin_offset[2] = static_cast<real_t>(0.0);
1004
+ texopt->scale[0] = static_cast<real_t>(1.0);
1005
+ texopt->scale[1] = static_cast<real_t>(1.0);
1006
+ texopt->scale[2] = static_cast<real_t>(1.0);
1007
+ texopt->turbulence[0] = static_cast<real_t>(0.0);
1008
+ texopt->turbulence[1] = static_cast<real_t>(0.0);
1009
+ texopt->turbulence[2] = static_cast<real_t>(0.0);
1010
+ texopt->type = TEXTURE_TYPE_NONE;
1011
+ }
1012
+
1014
1013
  static void InitMaterial(material_t *material) {
1014
+ InitTexOpt(&material->ambient_texopt, /* is_bump */ false);
1015
+ InitTexOpt(&material->diffuse_texopt, /* is_bump */ false);
1016
+ InitTexOpt(&material->specular_texopt, /* is_bump */ false);
1017
+ InitTexOpt(&material->specular_highlight_texopt, /* is_bump */ false);
1018
+ InitTexOpt(&material->bump_texopt, /* is_bump */ true);
1019
+ InitTexOpt(&material->displacement_texopt, /* is_bump */ false);
1020
+ InitTexOpt(&material->alpha_texopt, /* is_bump */ false);
1021
+ InitTexOpt(&material->reflection_texopt, /* is_bump */ false);
1022
+ InitTexOpt(&material->roughness_texopt, /* is_bump */ false);
1023
+ InitTexOpt(&material->metallic_texopt, /* is_bump */ false);
1024
+ InitTexOpt(&material->sheen_texopt, /* is_bump */ false);
1025
+ InitTexOpt(&material->emissive_texopt, /* is_bump */ false);
1026
+ InitTexOpt(&material->normal_texopt,
1027
+ /* is_bump */ false); // @fixme { is_bump will be true? }
1015
1028
  material->name = "";
1016
1029
  material->ambient_texname = "";
1017
1030
  material->diffuse_texname = "";
@@ -1342,7 +1355,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1342
1355
  std::string linebuf;
1343
1356
  while (inStream->peek() != -1) {
1344
1357
  safeGetline(*inStream, linebuf);
1345
- line_no++;
1358
+ line_no++;
1346
1359
 
1347
1360
  // Trim trailing whitespace.
1348
1361
  if (linebuf.size() > 0) {
@@ -1482,9 +1495,9 @@ void LoadMtl(std::map<std::string, int> *material_map,
1482
1495
 
1483
1496
  if (has_tr) {
1484
1497
  warn_ss << "Both `d` and `Tr` parameters defined for \""
1485
- << material.name << "\". Use the value of `d` for dissolve (line "
1486
- << line_no << " in .mtl.)"
1487
- << std::endl;
1498
+ << material.name
1499
+ << "\". Use the value of `d` for dissolve (line " << line_no
1500
+ << " in .mtl.)" << std::endl;
1488
1501
  }
1489
1502
  has_d = true;
1490
1503
  continue;
@@ -1494,9 +1507,9 @@ void LoadMtl(std::map<std::string, int> *material_map,
1494
1507
  if (has_d) {
1495
1508
  // `d` wins. Ignore `Tr` value.
1496
1509
  warn_ss << "Both `d` and `Tr` parameters defined for \""
1497
- << material.name << "\". Use the value of `d` for dissolve (line "
1498
- << line_no << " in .mtl.)"
1499
- << std::endl;
1510
+ << material.name
1511
+ << "\". Use the value of `d` for dissolve (line " << line_no
1512
+ << " in .mtl.)" << std::endl;
1500
1513
  } else {
1501
1514
  // We invert value of Tr(assume Tr is in range [0, 1])
1502
1515
  // NOTE: Interpretation of Tr is application(exporter) dependent. For
@@ -1560,8 +1573,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1560
1573
  if ((0 == strncmp(token, "map_Ka", 6)) && IS_SPACE(token[6])) {
1561
1574
  token += 7;
1562
1575
  ParseTextureNameAndOption(&(material.ambient_texname),
1563
- &(material.ambient_texopt), token,
1564
- /* is_bump */ false);
1576
+ &(material.ambient_texopt), token);
1565
1577
  continue;
1566
1578
  }
1567
1579
 
@@ -1569,8 +1581,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1569
1581
  if ((0 == strncmp(token, "map_Kd", 6)) && IS_SPACE(token[6])) {
1570
1582
  token += 7;
1571
1583
  ParseTextureNameAndOption(&(material.diffuse_texname),
1572
- &(material.diffuse_texopt), token,
1573
- /* is_bump */ false);
1584
+ &(material.diffuse_texopt), token);
1574
1585
  continue;
1575
1586
  }
1576
1587
 
@@ -1578,8 +1589,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1578
1589
  if ((0 == strncmp(token, "map_Ks", 6)) && IS_SPACE(token[6])) {
1579
1590
  token += 7;
1580
1591
  ParseTextureNameAndOption(&(material.specular_texname),
1581
- &(material.specular_texopt), token,
1582
- /* is_bump */ false);
1592
+ &(material.specular_texopt), token);
1583
1593
  continue;
1584
1594
  }
1585
1595
 
@@ -1587,8 +1597,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1587
1597
  if ((0 == strncmp(token, "map_Ns", 6)) && IS_SPACE(token[6])) {
1588
1598
  token += 7;
1589
1599
  ParseTextureNameAndOption(&(material.specular_highlight_texname),
1590
- &(material.specular_highlight_texopt), token,
1591
- /* is_bump */ false);
1600
+ &(material.specular_highlight_texopt), token);
1592
1601
  continue;
1593
1602
  }
1594
1603
 
@@ -1596,8 +1605,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1596
1605
  if ((0 == strncmp(token, "map_bump", 8)) && IS_SPACE(token[8])) {
1597
1606
  token += 9;
1598
1607
  ParseTextureNameAndOption(&(material.bump_texname),
1599
- &(material.bump_texopt), token,
1600
- /* is_bump */ true);
1608
+ &(material.bump_texopt), token);
1601
1609
  continue;
1602
1610
  }
1603
1611
 
@@ -1605,8 +1613,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1605
1613
  if ((0 == strncmp(token, "map_Bump", 8)) && IS_SPACE(token[8])) {
1606
1614
  token += 9;
1607
1615
  ParseTextureNameAndOption(&(material.bump_texname),
1608
- &(material.bump_texopt), token,
1609
- /* is_bump */ true);
1616
+ &(material.bump_texopt), token);
1610
1617
  continue;
1611
1618
  }
1612
1619
 
@@ -1614,8 +1621,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1614
1621
  if ((0 == strncmp(token, "bump", 4)) && IS_SPACE(token[4])) {
1615
1622
  token += 5;
1616
1623
  ParseTextureNameAndOption(&(material.bump_texname),
1617
- &(material.bump_texopt), token,
1618
- /* is_bump */ true);
1624
+ &(material.bump_texopt), token);
1619
1625
  continue;
1620
1626
  }
1621
1627
 
@@ -1624,8 +1630,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1624
1630
  token += 6;
1625
1631
  material.alpha_texname = token;
1626
1632
  ParseTextureNameAndOption(&(material.alpha_texname),
1627
- &(material.alpha_texopt), token,
1628
- /* is_bump */ false);
1633
+ &(material.alpha_texopt), token);
1629
1634
  continue;
1630
1635
  }
1631
1636
 
@@ -1633,8 +1638,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1633
1638
  if ((0 == strncmp(token, "disp", 4)) && IS_SPACE(token[4])) {
1634
1639
  token += 5;
1635
1640
  ParseTextureNameAndOption(&(material.displacement_texname),
1636
- &(material.displacement_texopt), token,
1637
- /* is_bump */ false);
1641
+ &(material.displacement_texopt), token);
1638
1642
  continue;
1639
1643
  }
1640
1644
 
@@ -1642,8 +1646,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1642
1646
  if ((0 == strncmp(token, "refl", 4)) && IS_SPACE(token[4])) {
1643
1647
  token += 5;
1644
1648
  ParseTextureNameAndOption(&(material.reflection_texname),
1645
- &(material.reflection_texopt), token,
1646
- /* is_bump */ false);
1649
+ &(material.reflection_texopt), token);
1647
1650
  continue;
1648
1651
  }
1649
1652
 
@@ -1651,8 +1654,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1651
1654
  if ((0 == strncmp(token, "map_Pr", 6)) && IS_SPACE(token[6])) {
1652
1655
  token += 7;
1653
1656
  ParseTextureNameAndOption(&(material.roughness_texname),
1654
- &(material.roughness_texopt), token,
1655
- /* is_bump */ false);
1657
+ &(material.roughness_texopt), token);
1656
1658
  continue;
1657
1659
  }
1658
1660
 
@@ -1660,8 +1662,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1660
1662
  if ((0 == strncmp(token, "map_Pm", 6)) && IS_SPACE(token[6])) {
1661
1663
  token += 7;
1662
1664
  ParseTextureNameAndOption(&(material.metallic_texname),
1663
- &(material.metallic_texopt), token,
1664
- /* is_bump */ false);
1665
+ &(material.metallic_texopt), token);
1665
1666
  continue;
1666
1667
  }
1667
1668
 
@@ -1669,8 +1670,7 @@ void LoadMtl(std::map<std::string, int> *material_map,
1669
1670
  if ((0 == strncmp(token, "map_Ps", 6)) && IS_SPACE(token[6])) {
1670
1671
  token += 7;
1671
1672
  ParseTextureNameAndOption(&(material.sheen_texname),
1672
- &(material.sheen_texopt), token,
1673
- /* is_bump */ false);
1673
+ &(material.sheen_texopt), token);
1674
1674
  continue;
1675
1675
  }
1676
1676
 
@@ -1678,17 +1678,15 @@ void LoadMtl(std::map<std::string, int> *material_map,
1678
1678
  if ((0 == strncmp(token, "map_Ke", 6)) && IS_SPACE(token[6])) {
1679
1679
  token += 7;
1680
1680
  ParseTextureNameAndOption(&(material.emissive_texname),
1681
- &(material.emissive_texopt), token,
1682
- /* is_bump */ false);
1681
+ &(material.emissive_texopt), token);
1683
1682
  continue;
1684
1683
  }
1685
1684
 
1686
1685
  // PBR: normal map texture
1687
1686
  if ((0 == strncmp(token, "norm", 4)) && IS_SPACE(token[4])) {
1688
1687
  token += 5;
1689
- ParseTextureNameAndOption(
1690
- &(material.normal_texname), &(material.normal_texopt), token,
1691
- /* is_bump */ false); // @fixme { is_bump will be true? }
1688
+ ParseTextureNameAndOption(&(material.normal_texname),
1689
+ &(material.normal_texopt), token);
1692
1690
  continue;
1693
1691
  }
1694
1692
 
@@ -1947,7 +1945,8 @@ bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes,
1947
1945
  static_cast<int>(vt.size() / 2), &vi)) {
1948
1946
  if (err) {
1949
1947
  std::stringstream ss;
1950
- ss << "Failed parse `f' line(e.g. zero value for face index. line " << line_num << ".)\n";
1948
+ ss << "Failed parse `f' line(e.g. zero value for face index. line "
1949
+ << line_num << ".)\n";
1951
1950
  (*err) += ss.str();
1952
1951
  }
1953
1952
  return false;
@@ -2009,7 +2008,8 @@ bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes,
2009
2008
  if (warn) {
2010
2009
  std::stringstream ss;
2011
2010
  ss << "Looks like empty filename for mtllib. Use default "
2012
- "material (line " << line_num << ".)\n";
2011
+ "material (line "
2012
+ << line_num << ".)\n";
2013
2013
 
2014
2014
  (*warn) += ss.str();
2015
2015
  }
@@ -2218,21 +2218,24 @@ bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes,
2218
2218
  if (greatest_v_idx >= static_cast<int>(v.size() / 3)) {
2219
2219
  if (warn) {
2220
2220
  std::stringstream ss;
2221
- ss << "Vertex indices out of bounds (line " << line_num << ".)\n" << std::endl;
2221
+ ss << "Vertex indices out of bounds (line " << line_num << ".)\n"
2222
+ << std::endl;
2222
2223
  (*warn) += ss.str();
2223
2224
  }
2224
2225
  }
2225
2226
  if (greatest_vn_idx >= static_cast<int>(vn.size() / 3)) {
2226
2227
  if (warn) {
2227
2228
  std::stringstream ss;
2228
- ss << "Vertex normal indices out of bounds (line " << line_num << ".)\n" << std::endl;
2229
+ ss << "Vertex normal indices out of bounds (line " << line_num << ".)\n"
2230
+ << std::endl;
2229
2231
  (*warn) += ss.str();
2230
2232
  }
2231
2233
  }
2232
2234
  if (greatest_vt_idx >= static_cast<int>(vt.size() / 2)) {
2233
2235
  if (warn) {
2234
2236
  std::stringstream ss;
2235
- ss << "Vertex texcoord indices out of bounds (line " << line_num << ".)\n" << std::endl;
2237
+ ss << "Vertex texcoord indices out of bounds (line " << line_num << ".)\n"
2238
+ << std::endl;
2236
2239
  (*warn) += ss.str();
2237
2240
  }
2238
2241
  }
@@ -1,3 +1,3 @@
1
1
  module TinyOBJ
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiny_obj
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colin MacKenzie IV
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-30 00:00:00.000000000 Z
11
+ date: 2018-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler