Commit Graph

15 Commits

Author SHA1 Message Date
b6c5c6d0a5 fix: Transformation nodes must create new scope
In VRML 1, transformations like translations and rotations
  accumulate within a scope as they are encountered, and one
  can even have multiple translations with shapes interleaved
  between them. This accumulation is not possible in VRML97.
  Therefore, it's necessary to insert new scopes in the translated
  file every time a new transformation is encountered. This
  commit makes sure that happens.
2024-02-14 00:00:09 -08:00
a6a6e60894 feat: Implement Translations (#19)
Also fixes bug: Translations and Rotations should not be inherited
  into inner grouping nodes.

Reviewed-on: #19
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2024-02-14 05:36:28 +00:00
1409d39665 feat: support DEF and USE syntax to share subtrees (#18)
Reviewed-on: #18
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2024-02-14 02:55:39 +00:00
1a2077a6b6 chore: Update version number to fix bad publish 2024-02-12 13:32:38 -08:00
fb1d2a020c feat: Set faces one or two-sided, conservatively (#17)
Set VRML97 translation of IndexedFaceSets to specify `solid false`
  unless the faces were explicitly indicated to have CLOCKWISE or
  COUNTERCLOCKWISE vertex ordering. This is conservative, but otherwise
  shapes may be "see-through" in undesirable ways, if the original
  VRML 1 vertices are not ordered consistently with the VRML97 default.

  Also fixes a typo/bug in picking up numerical values of parameters,
  and ensures that fields in the output VRML97 are always separated by
  at least a space, comma, or parenthesis.

  Also updates dependencies to their latest versions

Reviewed-on: #17
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2024-02-12 21:16:21 +00:00
bb0ef18903 feat: Handle IndexedLineSet
Also turns on PointSet but I don't have a good test case for that
  so not sure it is working.
  Resolves #16.
2023-09-18 21:28:23 -07:00
d0da8ced68 doc: Add documentation for optional arg to convert. (#15)
Also removes the useless example.d.ts file from the distribution.
  Updates the civet compiler to the greatest version that works
  on this code.
  Resolves #13.
  Resolves #14.

Reviewed-on: #15
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2023-09-12 06:35:29 +00:00
6752ab1348 feat: Handle additional syntax (#12)
* Converts all Lighting nodes into the output
  * Translates Title Info and SceneInfo Info into a WorldInfo node
  * Translates Viewer Info into a NavigationInfo node
  * Captures the creaseAngle parameter
  * Also, this commit documents the API (such as it is)
  Resolves #9.
  Resolves #10.

Reviewed-on: #12
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2023-09-11 07:15:17 +00:00
48925d05d9 fix: another erroneous publish 2023-09-04 23:46:43 -07:00
fe6bb08ef6 fix: published from wrong directory 2023-09-04 23:34:09 -07:00
b355d0c001 feat: Detect background color info in VRML 1 and encode it in VRML 97 (#11)
Resolves #7

Reviewed-on: #11
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2023-09-05 06:27:27 +00:00
8a0ece1dde chore: Prepare package for publication (#8)
Construct a proper package.json in the dist file and copy
  the README there for a reasonably complete shipped package.

Reviewed-on: #8
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2023-09-05 01:12:55 +00:00
66b24e657b feat: Translate VRML 1 to VRML97 (#6)
Resolves #5

Reviewed-on: #6
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2023-09-04 17:31:44 +00:00
e0861ea157 feat: install moo and use in toy example (#2)
I failed to find a satisfactory way to compile and import moo.js with
  fixed specifiers, so finally I just gave up and patched the distributed
  moo code to be an es6 module. Very ugly but it works.

Resolves #1.

Reviewed-on: #2
Co-authored-by: Glen Whitney <glen@studioinfinity.org>
Co-committed-by: Glen Whitney <glen@studioinfinity.org>
2023-09-01 21:32:25 +00:00
67a07e2000 chore: Set up development environment
Add the civet and typescript compilers, implement a build step,
  provide examples of using from es6, script, and command line.
  Of course, there is no actual behavior produced; convert always produces
  'foo' at the moment.
2023-09-01 08:20:34 -07:00