From aaron.bergstrom at und.edu Wed Oct 2 08:12:17 2024 From: aaron.bergstrom at und.edu (Bergstrom, Aaron) Date: Wed, 2 Oct 2024 15:12:17 +0000 Subject: [x3d-public] RawKee X3D Exporter for Maya Update Message-ID: Well Web3D community, it's been a while, but after 16 years there will soon be a new RawKee X3D Exporter plugin for Maya 2019-2025. Last night I finally slogged through 3 days worth of compiling errors to successfully build RawKee for Maya 2023. This morning I successfully loaded the plugin, and exported the following from Maya and loaded it into FreeWRL: Though we still have some minor issues to iron out, we're hoping to have the revised code posted to GitHub soon with new builds available not long after for Win/Linux/OSX for Maya 2019-2025. For those who have been around from way back in the day, I originally wrote the RawKee exporter for the NDSU Archaeology Tech Lab (checkout the Internet Wayback Machine - http://atl.ndsus.edu/ ). This revised version of RawKee is a project of the UND DREAM Lab (https://dream.crc.und.edu/ ), which I now lead as part of my duties for the UND Computational Research Center (https://crc.und.edu/ ). -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Wed Oct 2 21:48:03 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 2 Oct 2024 23:48:03 -0500 Subject: [x3d-public] New sample scene; gyroscope; ideas? Message-ID: I was thinking of doing 12 surfaces as quarter toroids, then 6 cylinders. Is there a color picker? -------------- next part -------------- An HTML attachment was scrubbed... URL: From joedwil at earthlink.net Thu Oct 3 11:02:41 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Thu, 03 Oct 2024 18:02:41 +0000 Subject: [x3d-public] Blend Shapes Message-ID: <5fef8e96-fddc-c679-9550-34c6d49f2bac@earthlink.net> As we hear more of high level authoring systems used in entertainment, such as USD,we encounter the term Blend Shapes or blendshapes, etc. Under the covers this is an alternative to skeleton-driven deformable mesh animation where the points are moved according to a weighted function that takes into consideration the motion of associated Joint nodes that could produce direct action on a vertex. Dependence on this style for detailed animation of individual points or groups of points results in networks of skeleton hierarchy rigs in order to produce shape deformations like lip movements or other muscle simulations. Overall, these structures are interesting and can solve some interesting mesh animation problems it becomes difficult to produce standardizable compositions. Besides, a better tool that can operate with or independently of the skeletal animations. One obvious solution is to add CoordinateInterpolator(s) to move points of the mesh. Here the basic problem is that you must deal with the entire target mesh for every key and it becomes a special case to combine the effects of multiple interpolators on the same mesh. I think the basic two ways to think about it is the idea of working with a complete mesh and/or just some part(s) of it, a sparse set, an area of points of the same target mesh. In reality, you want these skeleton-driven and these additional independent deformations to be summed so we get the complete animation. For instance we would say that for each frame, animation produced by the added displacements are added after all skeleton-driven point animation is complete. So, with this problem of simulating geometry and parts of geometry morphing from shape to shape under control of some set of Joint nodes along with producing surface movements more or less independently while innovating a design that gets rid of cumbersome Coordinate Interpolator operations, HAnim documented an animation form that lots agreed that this was a best practice, easily standardizable technique. interface Displacer { coordIndex [ list of indices ] description "Some Functionality" displacements [ list of 3D vectors ] name "required name" weight 0 } The coordIndex field contains a list of all coordinate index values of the target mesh be animated by this Displacer. The index is the order in which the point to appears in the user code. If only points 57, 58, and 59 were to be animated then the coordIndex field would be: coordIndex [56 57 58] The displacements field contains a list of 3D vectors that represent the maximum movement from the default or magicallly enough whatever the current location of that point is. Now, to master this you must understand that a point has its own local coordinate system. Like the default coordinate system of a Joint, a point in default, before animation, is the same as its parent Joint, 0 0 1 0]. This means that let's say that those three points are the tip of a finger and the objective is to move those points directly outward 0.01 unit then the vectors would be: displacements [0 -0.01 0, 0 -0.01 0, 0 -0.01 0] Now the weight field receives a 0 to1 floating point value that linearly scales the output vector. If zero,then no added movement; if 0.5 then one-half,and if 1, then maximum. If 1 is received,then the point will be moved -0.01 unit in the point's Y-axis of the geometry coordinate system. A way to compute the displacements value is if you happened to have a CoordinateInterplator you wanted to get rid of is to find the coordinates of the point at minimum, key input 0, and maximum, key input 1, then find the 3D vector that connects those locations. If you are finding these values by examination, then a major consideration is that you want to set these up understanding the default point coordinate system. So, finally,why did HAnim call it a Displacer? Well, there were a couple of names offered and the HAnim folks just had to pick something different from anyone was actually showing. The idea of a Displacer is very clear, you are telling it to displace a point from its current location in some direction relative to its default coordinate system. In summary, seems to me the idea of terms I have heard like deformer, morpher, blended shapes, and others all can be represented by the functionality of HAnim Displacer. I hope that is good news. Thanks and Fun, Joe From joedwil at earthlink.net Fri Oct 4 10:25:30 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Fri, 04 Oct 2024 17:25:30 +0000 Subject: [x3d-public] The Spatial Web Message-ID: <3b77a4fa-21fa-57ae-31be-a2abb6b0ca73@earthlink.net> https://spatialwebfoundation.org/wp-content/uploads/2023/08/Spatial_Web_Specification_Introduction_2024-06-03.pdf Just one example of the interest in very advanced use of nD+1 space and Avatars/Digital Twin characters that can assist their user(s) in navigating and using the spaces within the space. Good fun for All, Joe From yottzumm at gmail.com Fri Oct 4 12:08:10 2024 From: yottzumm at gmail.com (John Carlson) Date: Fri, 4 Oct 2024 14:08:10 -0500 Subject: [x3d-public] Improve my example? No scripts? Message-ID: Can this be done without scripts so i can use castle-model-viewer? https://github.com/coderextreme/JSONverse/blob/main/public/x3d/symbols3d.x3d If not, can we extend the standard? Thanks! John -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Fri Oct 4 16:14:00 2024 From: yottzumm at gmail.com (John Carlson) Date: Fri, 4 Oct 2024 18:14:00 -0500 Subject: [x3d-public] Should CPPON support CDATA Sections? In-Reply-To: References: Message-ID: I haven?t heard a response? Is there some way of translating X3D XML CDATA (script) sections to a C++ standard, instead of something Microsoft specific? How do I embed JavaScript in C++? Thanks, John On Sat, Apr 6, 2024 at 4:36?AM John Carlson wrote: > Should CPPON (C++ Object Notation) support embedded Script and Shader > CDATA sections? > > C++ SAI examples supports (JavaScript) scripting by wrapping CDATA section > lines in _T() macros, I gather. This seems to be Microsoft specific? > Should I adopt URLs for CDATA sections/Scripting in CPPON? > > What's the best standard for including scripts in C++ code? > > Thanks! > > John > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Fri Oct 4 18:30:07 2024 From: yottzumm at gmail.com (John Carlson) Date: Fri, 4 Oct 2024 20:30:07 -0500 Subject: [x3d-public] Should CPPON support CDATA Sections? In-Reply-To: References: Message-ID: Really? See: https://web.dev/articles/emscripten-embedding-js-snippets On Fri, Oct 4, 2024 at 8:28?PM Myeong Won Lee wrote: > Dear John, > > I am sorry for my late reply. > > I don't think that we can include the CDATA section of JavaScript in C++ > because we cannot mix JavaScript and C++. > Rather, I would suggest that the CDATA section be converted to a C++ > method. > > Sincerely, > > Myeong > > On Sat, Oct 5, 2024 at 8:14?AM John Carlson wrote: > >> I haven?t heard a response? >> >> Is there some way of translating X3D XML CDATA (script) sections to a >> C++ standard, instead of something Microsoft specific? How do I embed >> JavaScript in C++? >> >> Thanks, >> >> John >> >> On Sat, Apr 6, 2024 at 4:36?AM John Carlson wrote: >> >>> Should CPPON (C++ Object Notation) support embedded Script and Shader >>> CDATA sections? >>> >>> C++ SAI examples supports (JavaScript) scripting by wrapping CDATA >>> section lines in _T() macros, I gather. This seems to be Microsoft >>> specific? Should I adopt URLs for CDATA sections/Scripting in CPPON? >>> >>> What's the best standard for including scripts in C++ code? >>> >>> Thanks! >>> >>> John >>> >> > > -- > > Myeong Won Lee, PhD, CEO > > VRSTA Inc. > > GwangPyeong-ro 56-Gil 8-13, > Gangnam-gu, > Seoul, 06367, Korea > > > E-mail) myeongwonlee at gmail.com, mwlee at suwon.ac.kr > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Fri Oct 4 18:45:12 2024 From: yottzumm at gmail.com (John Carlson) Date: Fri, 4 Oct 2024 20:45:12 -0500 Subject: [x3d-public] Should CPPON support CDATA Sections? In-Reply-To: References: Message-ID: I?m assuming that Shaders would get converted to an OpenGL API, or Vulkan. John On Fri, Oct 4, 2024 at 8:42?PM Myeong Won Lee wrote: > Dear John, > > Thank you for the information. > I didn't know that. > We will try to figure it out and test it to see if it is applicable to X3D. > > Sincerely, > > Myeong > > On Sat, Oct 5, 2024 at 10:30?AM John Carlson wrote: > >> Really? See: >> https://web.dev/articles/emscripten-embedding-js-snippets >> >> On Fri, Oct 4, 2024 at 8:28?PM Myeong Won Lee >> wrote: >> >>> Dear John, >>> >>> I am sorry for my late reply. >>> >>> I don't think that we can include the CDATA section of JavaScript in C++ >>> because we cannot mix JavaScript and C++. >>> Rather, I would suggest that the CDATA section be converted to a C++ >>> method. >>> >>> Sincerely, >>> >>> Myeong >>> >>> On Sat, Oct 5, 2024 at 8:14?AM John Carlson wrote: >>> >>>> I haven?t heard a response? >>>> >>>> Is there some way of translating X3D XML CDATA (script) sections to a >>>> C++ standard, instead of something Microsoft specific? How do I embed >>>> JavaScript in C++? >>>> >>>> Thanks, >>>> >>>> John >>>> >>>> On Sat, Apr 6, 2024 at 4:36?AM John Carlson wrote: >>>> >>>>> Should CPPON (C++ Object Notation) support embedded Script and Shader >>>>> CDATA sections? >>>>> >>>>> C++ SAI examples supports (JavaScript) scripting by wrapping CDATA >>>>> section lines in _T() macros, I gather. This seems to be Microsoft >>>>> specific? Should I adopt URLs for CDATA sections/Scripting in CPPON? >>>>> >>>>> What's the best standard for including scripts in C++ code? >>>>> >>>>> Thanks! >>>>> >>>>> John >>>>> >>>> >>> >>> -- >>> >>> Myeong Won Lee, PhD, CEO >>> >>> VRSTA Inc. >>> >>> GwangPyeong-ro 56-Gil 8-13, >>> Gangnam-gu, >>> Seoul, 06367, Korea >>> >>> >>> E-mail) myeongwonlee at gmail.com, mwlee at suwon.ac.kr >>> >> > > -- > > Myeong Won Lee, PhD, CEO > > VRSTA Inc. > > GwangPyeong-ro 56-Gil 8-13, > Gangnam-gu, > Seoul, 06367, Korea > > > E-mail) myeongwonlee at gmail.com, mwlee at suwon.ac.kr > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Fri Oct 4 22:47:51 2024 From: yottzumm at gmail.com (John Carlson) Date: Sat, 5 Oct 2024 00:47:51 -0500 Subject: [x3d-public] CSS for networking Message-ID: How do people feel about CSS to make things network aware, even HTML and SVG? -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Sat Oct 5 04:22:19 2024 From: yottzumm at gmail.com (John Carlson) Date: Sat, 5 Oct 2024 06:22:19 -0500 Subject: [x3d-public] Not network sensor node. Cascading Network stylesheets Message-ID: I am thinking an alternative to network sensor node would be cascading network stylesheets, applicable to any HTML, SVG or X3D. -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Sat Oct 5 13:51:03 2024 From: yottzumm at gmail.com (John Carlson) Date: Sat, 5 Oct 2024 15:51:03 -0500 Subject: [x3d-public] Automating 3D annotations Message-ID: Does anyone have a technique for automating 3D annotation placement while the camera (viewpoint?) changes? I know of billboard, but I would like to move obscured annotations so they are visible. -------------- next part -------------- An HTML attachment was scrubbed... URL: From brutzman at nps.edu Sat Oct 5 15:55:48 2024 From: brutzman at nps.edu (Brutzman, Donald (Don) (CIV)) Date: Sat, 5 Oct 2024 22:55:48 +0000 Subject: [x3d-public] X3D Interactive profile support for all Geometry2D nodes Message-ID: Comments welcome on this new specification issue. * Mantis 1474: Interactive profile ought to support Geometry2D component level 2 (Arc2D, ArcClose2D, Circle2D, Disk2D) * https://www.web3d.org/member-only/mantis/view.php?id=1474 * Description: * Interactive profile is roughly on a par with VRML97 capabilities, meaning similar level of complexity. * Restricting Interactive profile Geometry2D component to level 1 excludes important nodes (Arc2D, ArcClose2D, Circle2D, Disk2D) that are likely to be implemented by any implementation supporting this component. * One original motivation for Interactive profile was support for mobile devices with limited computation or rendering capabilities - mobile devices no longer have such a constraint. * Need to change Interactive profile to support Geometry2D component level 2. * X3D Architecture, Annex E (normative) Immersive profile, E.3 Component support * https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/immersive.html#ComponentSupport all the best, Don -- Don Brutzman Naval Postgraduate School, Code USW/Br brutzman at nps.edu Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149 X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Sun Oct 6 09:38:12 2024 From: yottzumm at gmail.com (John Carlson) Date: Sun, 6 Oct 2024 11:38:12 -0500 Subject: [x3d-public] Engineering problem. Message-ID: 1. I have an Engineering problem that's a combination of Mechanical Engineering (2D and 3D graphics) and Electrical Engineering (bits). 2. [11:24 AM] https://coderextreme.net/public/symbols.html The 2D views below should agree with the 3D views above. Select the color box menu item, then select torus and cylinder geometry to change colors. Results will show below the 3D scene. If you play with it a bit, you'll see what's going on. You can move around the scene by click-dragging with the mouse in the black area. 3. 4. Ideally, we could do this sort of thing without scripting. 1. John -------------- next part -------------- An HTML attachment was scrubbed... URL: From joedwil at earthlink.net Sun Oct 6 10:12:36 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Sun, 06 Oct 2024 17:12:36 +0000 Subject: [x3d-public] Interactivity and glTF Message-ID: <16fbcd08-468c-81b4-9606-2fe0b507cb3d@earthlink.net> https://www.youtube.com/watch?v=E_dRv6W3PUU Interactivity and glTF https://youtu.be/E_dRv6W3PUU?t=876 Audio Graph Interactivity. 18 September 2024 More than the spinning tennis shoe? From joedwil at earthlink.net Sun Oct 6 13:01:20 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Sun, 06 Oct 2024 20:01:20 +0000 Subject: [x3d-public] Engineering problem. Message-ID: <75e74d32-be0f-2675-201f-8269e55db66f@earthlink.net> > Electrical Engineering (bits) also continious-wave (cw), in fact, outside the box lots of bits are transmitted using cw. Maybe the best use of 2D in 3D is textures and text and lines and arrows and some interactive interface, and of course plan views of an object, and maybe simple simulations and simple data representations. That not exhaustive list of 2D and 3D components of x3d will show you that whatever you want to do, just do it with X3D. If this is engineering problem, then Rigid Body Physics? Good Luck with -----Original Message----- From: Extensible 3D (X3D) Graphics public discussion Sent: Oct 6, 2024 9:39 AM To: X3D Graphics public mailing list Cc: John Carlson Subject: [x3d-public] Engineering problem. * I have an Engineering problem that's a combination of Mechanical Engineering (2D and 3D graphics) and Electrical Engineering (bits). * [11:24 AM]https://coderextreme.net/public/symbols.html (https://coderextreme.net/public/symbols.html) The 2D views below should agree with the 3D views above. Select the color box menu item, then select torus and cylinder geometry to change colors. Results will show below the 3D scene. If you play with it a bit, you'll see what's going on. You can move around the scene by click-dragging with the mouse in the black area. * * Ideally, we could do this sort of thing without scripting. * John -------------- next part -------------- An HTML attachment was scrubbed... URL: From joedwil at earthlink.net Sun Oct 6 15:02:06 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Sun, 06 Oct 2024 22:02:06 +0000 Subject: [x3d-public] X3D Interactive profile support for all Geometry2D nodes Message-ID: <472b4128-c777-e0b3-2640-27fa403f7033@earthlink.net> Fine for noticing Level 2 nodes should be available. detail: "Polypoint2D : X3DGeometryNode { SFNode [in,out] metadata NULL [X3DMetadataObject] MFVec2f [in,out] point [] (-∞,∞)}The Polyline2D node specifies a set of vertices in the local 2D coordinate system at each of which is displayed a point. The points field specifies ... " please notice use of 'point' in idl and 'points' in text description. Thanks, Joe -----Original Message----- From: Extensible 3D (X3D) Graphics public discussion Sent: Oct 5, 2024 3:56 PM To: X3D Public Mailing List (x3d-public at web3d.org) Cc: Brutzman, Donald (Don) (CIV) Subject: [x3d-public] X3D Interactive profile support for all Geometry2D nodes Comments welcome on this new specification issue. * Mantis 1474: Interactive profile ought to support Geometry2D component level 2 (Arc2D, ArcClose2D, Circle2D, Disk2D) * https://www.web3d.org/member-only/mantis/view.php?id=1474 * Description: * Interactive profile is roughly on a par with VRML97 capabilities, meaning similar level of complexity. * Restricting Interactive profile Geometry2D component to level 1 excludes important nodes (Arc2D, ArcClose2D, Circle2D, Disk2D) that are likely to be implemented by any implementation supporting this component. * One original motivation for Interactive profile was support for mobile devices with limited computation or rendering capabilities - mobile devices no longer have such a constraint. * Need to change Interactive profile to support Geometry2D component level 2. * X3D Architecture, Annex E (normative) Immersive profile, E.3 Component support * https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/immersive.html#ComponentSupport all the best, Don -- Don Brutzman Naval Postgraduate School, Code USW/Br brutzman at nps.edu Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149 X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman -------------- next part -------------- An HTML attachment was scrubbed... URL: From andreasplesch at gmail.com Mon Oct 7 10:00:47 2024 From: andreasplesch at gmail.com (Andreas Plesch) Date: Mon, 7 Oct 2024 13:00:47 -0400 Subject: [x3d-public] Improve my example? No scripts? (John Carlson) In-Reply-To: References: Message-ID: It would be difficult to do without a script. But one way may be to have one ColorInterpolator per color (only way to generate SFColor out events), and one Timesensor per color (to generate fraction events to trigger the color events), all disabled initially. (Actually, one set of such pairs for each Cylinder). Then enable the Timesensor which corresponds to the selected color on the color bar, and disable all others. Probably via Touchsensor on each color square and routing isActive and negated isActive through BooleanFilter to the Timesensors (lots of Routes, colors squared or so.) Then route touchTime from the cylinder Touchsensors to startTime (and perhaps stopTime, for one-time triggering) to all Timesensors for the Cylinder. Only the enabled Timesensor would trigger SFColor out from the associated ColorInterpolator. Then route all ColorInterpolators (for the specific Cylinder) to all Materials. To make this idea work, actually separate sets of ColorInterpolator/Timesensor pairs would be needed per individual Cylinder. So this might work but needs very many nodes and routes. On the other hand the scripts also need lots of functions. There may be another way based on Switch nodes, and having predefined Shapes per color. So given n colors, each Cylinder is a Switch with n Shapes. Then touching a cylinder, selects a color based on a IntegerTrigger node (per Switch). The IntegerTrigger nodes are reconfigured (set_integerKey) when a color square is selected. I think this can be done via a IntegerSequencer which gets a fraction from a ScalarInterpolator (per color) with a single keyValue, which is fed from a Timesensor which can be triggered from a Touchsensor on the color square. The piece missing is that reconfiguration also generates triggerValue out which would be routed to the Switch nodes which is not wanted then. Not sure how to solve this, I could not think of a way. Some ideas, -Andreas > Message: 1 > Date: Fri, 4 Oct 2024 14:08:10 -0500 > From: John Carlson > To: X3D Graphics public mailing list > Subject: [x3d-public] Improve my example? No scripts? > Message-ID: > > Content-Type: text/plain; charset="utf-8" > > Can this be done without scripts so i can use castle-model-viewer? > > https://github.com/coderextreme/JSONverse/blob/main/public/x3d/symbols3d.x3d > > If not, can we extend the standard? > > Thanks! > > John -- Andreas Plesch Waltham, MA 02453 From yottzumm at gmail.com Tue Oct 8 19:29:53 2024 From: yottzumm at gmail.com (John Carlson) Date: Tue, 8 Oct 2024 21:29:53 -0500 Subject: [x3d-public] Improve my example? No scripts? (John Carlson) In-Reply-To: References: Message-ID: Interesting ideas, Andreas, I didn?t realize there was a ColorInterpolator, Thanks! John On Mon, Oct 7, 2024 at 12:02?PM Andreas Plesch via x3d-public < x3d-public at web3d.org> wrote: > It would be difficult to do without a script. > > But one way may be to have one ColorInterpolator per color (only way > to generate SFColor out events), and one Timesensor per color (to > generate fraction events to trigger the color events), all disabled > initially. (Actually, one set of such pairs for each Cylinder). > > Then enable the Timesensor which corresponds to the selected color on > the color bar, and disable all others. Probably via Touchsensor on > each color square and routing isActive and negated isActive through > BooleanFilter to the Timesensors (lots of Routes, colors squared or > so.) > > Then route touchTime from the cylinder Touchsensors to startTime (and > perhaps stopTime, for one-time triggering) to all Timesensors for the > Cylinder. Only the enabled Timesensor would trigger SFColor out from > the associated ColorInterpolator. > > Then route all ColorInterpolators (for the specific Cylinder) to all > Materials. To make this idea work, actually separate sets of > ColorInterpolator/Timesensor pairs would be needed per individual > Cylinder. > > So this might work but needs very many nodes and routes. On the other > hand the scripts also need lots of functions. > > > There may be another way based on Switch nodes, and having predefined > Shapes per color. So given n colors, each Cylinder is a Switch with n > Shapes. Then touching a cylinder, selects a color based on a > IntegerTrigger node (per Switch). > > The IntegerTrigger nodes are reconfigured (set_integerKey) when a > color square is selected. I think this can be done via a > IntegerSequencer which gets a fraction from a ScalarInterpolator (per > color) with a single keyValue, which is fed from a Timesensor which > can be triggered from a Touchsensor on the color square. > > The piece missing is that reconfiguration also generates triggerValue > out which would be routed to the Switch nodes which is not wanted > then. Not sure how to solve this, I could not think of a way. > > Some ideas, -Andreas > > > > Message: 1 > > Date: Fri, 4 Oct 2024 14:08:10 -0500 > > From: John Carlson > > To: X3D Graphics public mailing list > > Subject: [x3d-public] Improve my example? No scripts? > > Message-ID: > > 6GjARK+TaQy3HU9FCJrHZgbhe7Zn0mdVafEUoKYQ at mail.gmail.com> > > Content-Type: text/plain; charset="utf-8" > > > > Can this be done without scripts so i can use castle-model-viewer? > > > > > https://github.com/coderextreme/JSONverse/blob/main/public/x3d/symbols3d.x3d > > > > If not, can we extend the standard? > > > > Thanks! > > > > John > > > -- > Andreas Plesch > Waltham, MA 02453 > > _______________________________________________ > x3d-public mailing list > x3d-public at web3d.org > http://web3d.org/mailman/listinfo/x3d-public_web3d.org > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Wed Oct 9 07:54:42 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 9 Oct 2024 09:54:42 -0500 Subject: [x3d-public] Sharing X3D fields in gatherings Message-ID: I?m trying to figure out how to share fields within ?gatherings,? when something like DIS is unavailable, as it is with X_ITE. I currently use ProtoInstances and specify a list of gathering names in an MFString. That works, but it involves a goldberg contraption. I would like something easy, like an extension to which includes gathering names. In a single user app, this would not be needed. But I feel something like this is needed for multiuser X3D. Gathering names would point to security tokens on the client side to enroll users in gatherings on the server side. At this point, I am not trying to defeat CORS. A templating service with client provided data currently fills in a textarea with gathering information. Ideally, filling in the textarea will be done on the client side with Selenium Java, and allow multiple gatherings. Note that mapping from gathering name to gathering token makes the scene available to many collaboration servers , and keeps the .x3d scene clear of tokens Your thoughts? Can we subclass perhaps? John -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Wed Oct 9 08:49:57 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 9 Oct 2024 10:49:57 -0500 Subject: [x3d-public] Sharing X3D fields in gatherings In-Reply-To: References: Message-ID: I am also considering a list of statements which are something like: ? for validation of gathering names in fields. One could consider adding s to Scripts, ComposedShader, etc to make all fields shareable. I?m not prepared to do an implementation of gatherings or gathering names as nodes or statements, but I can share and extend some JavaScript that works with ProtoInstances and socket.io. Ideally, there would be a layer on top of socket.io calls to protect from socket.io specifics, but I?m not quite there yet. I?m also thinking about uploading multiple gathering name-> token mappings, I?ll probably do it with multi-select, then a keystroke or a menu item. I currently think this opens up multiple browsers, but I?ve not tried it. John On Wed, Oct 9, 2024 at 9:54?AM John Carlson wrote: > I?m trying to figure out how to share fields within ?gatherings,? when > something like DIS is unavailable, as it is with X_ITE. I currently use > ProtoInstances and specify a list of gathering names in an MFString. That > works, but it involves a Goldberg contraption. I would like something > easy, like an extension to which includes gathering names. In a > single user app, this would not be needed. But I feel something like this > is needed for multiuser X3D. Gathering names would point to security > tokens on the client side to enroll users in gatherings on the server > side. At this point, I am not trying to defeat CORS. A templating service > with client provided data currently fills in a textarea with gathering > information. Ideally, filling in the textarea will be done on the client > side with Selenium Java, and allow multiple gatherings. > > Note that mapping from gathering name to gathering token makes the scene > available to many collaboration servers , and keeps the .x3d scene clear of > tokens > > Your thoughts? Can we subclass perhaps? > > John > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Wed Oct 9 19:33:57 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 9 Oct 2024 21:33:57 -0500 Subject: [x3d-public] Please check validation of this file Message-ID: You X3D want examples? Here's an example, attached. Note that X3DJSAIL reports some things on Layer and LayoutLayer children I have some questions about. Specific errors are way below. Here are relevant sections of the standards and X3DJSAIL that show some children of Layout and LayoutLayer are not being handled by X3DLoaderDOM.java Layer : X3DLayerNode { MFNode [in] addChildren [X3DChildNode] MFNode [in] removeChildren [X3DChildNode] MFNode [in,out] children [] [X3DChildNode] SFNode [in,out] metadata NULL [X3DMetadataObject] MFString [in,out] objectType "ALL" ["ALL","NONE","TERRAIN",...] SFBool [in,out] pickable TRUE SFNode [in,out] viewport NULL [X3DViewportNode] SFBool [in,out] visible TRUE } LayoutLayer : X3DLayerNode { MFNode [in] addChildren [X3DChildNode] MFNode [in] removeChildren [X3DChildNode] MFNode [in,out] children [] [X3DChildNode] SFNode [in,out] layout NULL [X3DLayoutNode] SFNode [in,out] metadata NULL [X3DMetadataObject] MFString [in,out] objectType "ALL" ["ALL","NONE","TERRAIN",...] SFBool [in,out] pickable TRUE SFNode [in,out] viewport NULL [X3DViewportNode] SFBool [in,out] visible TRUE } So I look for childnodes reported below to see if they inherit from X3DChildNode. I think that Group and Transform are obviously X3DChildNode. Script: X3DScriptNode : X3DChildNode, X3DURLObject { SFTime [in,out] autoRefresh 0.0 [0,?) SFTime [in,out] autoRefreshTimeLimit 3600.0 [0,?) SFString [in,out] description "" SFBool [in,out] load TRUE SFNode [in,out] metadata NULL [X3DMetadataObject] MFString [in,out] url [] [URI] } Viewpoint: X3DViewpointNode : X3DBindableNode { SFBool [in] set_bind SFVec3f/d [in,out] centerOfRotation 0 0 0 (-?,?) SFString [in,out] description "" SFFloat [in,out] farDistance -1 -1 or (0,?) SFBool [in,out] jump TRUE SFNode [in,out] metadata NULL [X3DMetadataObject] SFNode [in,out] navigationInfo NULL [NavigationInfo] SFFloat [in,out] nearDistance -1 -1 or (0,?) SFRotation [in,out] orientation 0 0 1 0 (-?,?) SFVec3f/d [in,out] position 0 0 10 (-?,?) SFBool [in,out] retainUserOffsets FALSE SFBool [in,out] viewAll FALSE SFTime [out] bindTime SFBool [out] isBound } And later: X3DBindableNode : X3DChildNode { SFBool [in] set_bind SFNode [in,out] metadata NULL [X3DMetadataObject] SFTime [out] bindTime SFBool [out] isBound } Layout: X3DLayoutNode : X3DChildNode { SFNode [in,out] metadata NULL [X3DMetadataObject] } Class ProtoDeclare java.lang.Object org.web3d.x3d.jsail.X3DConcreteElement org.web3d.x3d.jsail.X3DConcreteStatement org.web3d.x3d.jsail.Core.ProtoDeclare All Implemented Interfaces:X3DChildNode , X3DNode Class ProtoInstance java.lang.Object org.web3d.x3d.jsail.X3DConcreteElement org.web3d.x3d.jsail.X3DConcreteNode org.web3d.x3d.jsail.Core.ProtoInstance All Implemented Interfaces:X3DChildNode , X3DNode , X3DPrototypeInstance I don't see anything wrong with the standard, but I don't know about X3DJSAIL validation. This may be an old version of X3DJSAIL, I will download a new copy from the website. Thanks, John [error] X3DLoaderDOM: Parent-child node relationship not found! (parent Layer, child Collision, containerField='children') Please report this problem to brutzman at nps.edu [error] X3DLoaderDOM: Parent-child node relationship not found! (parent Layer, child Group, containerField='children') Please report this problem to brutzman at nps.edu [error] X3DLoaderDOM: Parent-child node relationship not found! (parent Layer, child ROUTE, containerField='') Please report this problem to brutzman at nps.edu [error] X3DLoaderDOM: Parent-child node relationship not found! (parent Layer, child Script, containerField='children') Please report this problem to brutzman at nps.edu [error] X3DLoaderDOM: Parent-child node relationship not found! (parent Layer, child Transform, containerField='children') Please report this problem to brutzman at nps.edu [error] X3DLoaderDOM: Parent-child node relationship not found! (parent LayoutLayer, child Layout, containerField='layout') Please report this problem to brutzman at nps.edu [error] X3DLoaderDOM: Parent-child node relationship not found! (parent LayoutLayer, child ProtoDeclare, containerField='') Please report this problem to brutzman at nps.edu [error] X3DLoaderDOM: Parent-child node relationship not found! (parent LayoutLayer, child ProtoInstance, containerField='children') Please report this problem to brutzman at nps.edu [error] X3DLoaderDOM: Parent-child node relationship not found! (parent LayoutLayer, child Transform, containerField='children') Please report this problem to brutzman at nps.edu [error] X3DLoaderDOM: Parent-child node relationship not found! (parent LayoutLayer, child Viewport, containerField='viewport') Please report this problem to brutzman at nps.edu -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: bumpyfreewrljsonverse.x3d Type: model/x3d+xml Size: 23537 bytes Desc: not available URL: From yottzumm at gmail.com Thu Oct 10 01:55:30 2024 From: yottzumm at gmail.com (John Carlson) Date: Thu, 10 Oct 2024 03:55:30 -0500 Subject: [x3d-public] Regression testing portfolio of X_ITE scenes. Message-ID: I haven't touched X3DJSONLD in some time, and I did a fresh install because git took a very long time. It seems like my site is very slow. I can't even get the whole site loaded. I realize that I shouldn't load one X_ITE at a time. Perhaps WASM might help? John -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Thu Oct 10 01:58:44 2024 From: yottzumm at gmail.com (John Carlson) Date: Thu, 10 Oct 2024 03:58:44 -0500 Subject: [x3d-public] Regression testing portfolio of X_ITE scenes. In-Reply-To: References: Message-ID: It could be my service provider or my webhost. Looking into it. On Thu, Oct 10, 2024 at 3:55?AM John Carlson wrote: > I haven't touched X3DJSONLD in some time, and I did a fresh install > because git took a very long time. > > It seems like my site is very slow. I can't even get the whole site > loaded. > > I realize that I shouldn't load one X_ITE at a time. > > Perhaps WASM might help? > > John > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Thu Oct 10 02:10:35 2024 From: yottzumm at gmail.com (John Carlson) Date: Thu, 10 Oct 2024 04:10:35 -0500 Subject: [x3d-public] Regression testing portfolio of X_ITE scenes. In-Reply-To: References: Message-ID: Here's my page. I tried iframes, but X_ITE wouldn't show up (no iframe-set?) coderextreme.net/X3DJSONLD/src/main/html/personal.html Again, I believe the issue is multiple browsers per page, as I was warned. Now I will do Java. John On Thu, Oct 10, 2024 at 3:58?AM John Carlson wrote: > It could be my service provider or my webhost. > > Looking into it. > > On Thu, Oct 10, 2024 at 3:55?AM John Carlson wrote: > >> I haven't touched X3DJSONLD in some time, and I did a fresh install >> because git took a very long time. >> >> It seems like my site is very slow. I can't even get the whole site >> loaded. >> >> I realize that I shouldn't load one X_ITE at a time. >> >> Perhaps WASM might help? >> >> John >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From aaron.bergstrom at und.edu Thu Oct 10 13:46:15 2024 From: aaron.bergstrom at und.edu (Bergstrom, Aaron) Date: Thu, 10 Oct 2024 20:46:15 +0000 Subject: [x3d-public] RawKee X3D Plug-in for Maya 2019 and later - Now on GitHub Message-ID: Update - RawKee X3D Exporter for Maya Just wanted to let the community know that the UND DREAM Lab has updated the RawKee X3D exporter for Maya 2019 and later. You can now find the new RawKee Repo at: * https://github.com/und-dream-lab/rawkee We plan to update tutorials and release binaries over the next few of months. However, the build process is not too difficult, if you'd like to build it yourself for your version of Maya 2019+ and OS. The last time the Plugin was compiled, was in late 2007. So I spent about a week fixing build issues, and resolving several bugs that were causing crashes. But I'm fairly confident, that this version should be usable and stable. Future plans are to migrate the plugin to the Maya Python API 2.0. This version of RawKee was built using the Maya 2023 SDK on Windows 10. And was tested with Maya 2023 on Windows 10. Aaron -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Tue Oct 15 08:06:26 2024 From: yottzumm at gmail.com (John Carlson) Date: Tue, 15 Oct 2024 10:06:26 -0500 Subject: [x3d-public] Note to .glb Blender export folks Message-ID: When .glb?s (maybe .glTF) get exported from Blender, an accompanying .x3d file with Inline should get exported that reflects the animation present in Blender. Thanks Holger for the idea! John -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Tue Oct 15 08:16:54 2024 From: yottzumm at gmail.com (John Carlson) Date: Tue, 15 Oct 2024 10:16:54 -0500 Subject: [x3d-public] X3D futures. Inline, ROUTEs and IMPORT/EXPORT Message-ID: It seems like the legacy for X3D is Inline, ROUTEs and IMPORT/EXPORT for .glb files. When do we get these nodes working for HTML? Thanks! John -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Tue Oct 15 10:40:09 2024 From: yottzumm at gmail.com (John Carlson) Date: Tue, 15 Oct 2024 12:40:09 -0500 Subject: [x3d-public] Thanks FreeWRL! Message-ID: Thanks for implementing HAnimDisplacers in HAnimSegment. I thought I was losing my mind. But I question what happens when you put a Viewpoint inside an HAnimSegment. Maybe the standard needs to be clarified. No worries, I moved the Viewpoint(s) outside the Humanoid. Easy peasy! I realize if you put a camera in someone?s hand, you want the Viewpoint to move with the hand. Perhaps other implementors should take notice. In my HAnim application I don?t have any hands! John -------------- next part -------------- An HTML attachment was scrubbed... URL: From gpugroup at gmail.com Tue Oct 15 10:46:02 2024 From: gpugroup at gmail.com (GPU Group) Date: Tue, 15 Oct 2024 11:46:02 -0600 Subject: [x3d-public] Thanks FreeWRL! In-Reply-To: References: Message-ID: On the Launcher there's an option [ ] HAnim skinning by CPU (versus default by GPU) Does that make a difference with segment child viewpoint? -Doug On Tue, Oct 15, 2024 at 11:40?AM John Carlson wrote: > Thanks for implementing HAnimDisplacers in HAnimSegment. I thought I was > losing my mind. > > But I question what happens when you put a Viewpoint inside an > HAnimSegment. Maybe the standard needs to be clarified. > > No worries, I moved the Viewpoint(s) outside the Humanoid. Easy peasy! > > I realize if you put a camera in someone?s hand, you want the Viewpoint to > move with the hand. Perhaps other implementors should take notice. In my > HAnim application I don?t have any hands! > > John > -------------- next part -------------- An HTML attachment was scrubbed... URL: From joedwil at earthlink.net Tue Oct 15 12:22:21 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Tue, 15 Oct 2024 19:22:21 +0000 Subject: [x3d-public] Thanks FreeWRL! Message-ID: <8444b179-59d1-69d2-685a-4e91f764509d@earthlink.net> > No worries, I moved the Viewpoint(s) outside the Humanoid. Easy peasy! Viewpoints outside the Humanoid are in Host space and not affected by motion of the Humanoid. The Humanoid includes the viewpoints field. The viewpoints field has a different functionality, it is in Humanoid space. Notice the Viewpoint in a Segment is coded as a Site with a special suffix, _view: Site objects that are used to define viewpoint locations shall have a "_view" suffix appended. https://www.web3d.org/documents/specifications/19774/V2.0/index.html https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid "The viewpoints field has a different functionality and behaviour than ..." https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Site "Site objects that are used to define viewpoint locations shall have a "_view" suffix appended. So, we can have viewpoints (1) in host space when coded outside the Humanoid, (2) in Humanoid space viewpoints field affected by translation and rotation of the Root, and (3) in a Segment in Segment space coded as a Site with special name when the view is affected by motion of the Segment or Site.. So everything needed is accounted for. If not please tell. Thanks and Best, Joe From yottzumm at gmail.com Tue Oct 15 14:34:25 2024 From: yottzumm at gmail.com (John Carlson) Date: Tue, 15 Oct 2024 16:34:25 -0500 Subject: [x3d-public] Thanks FreeWRL! In-Reply-To: References: Message-ID: If you have a command line option for that, I can try it. I?m fairly non-launcher oriented. My ideal is to have X3D running in a terminal. Maybe someday. They have images over and under text these days, and shaders. Notcurses might be an approach Thanks, John On Tue, Oct 15, 2024 at 12:46?PM GPU Group wrote: > On the Launcher there's an option > [ ] HAnim skinning by CPU (versus default by GPU) > Does that make a difference with segment child viewpoint? > -Doug > > > On Tue, Oct 15, 2024 at 11:40?AM John Carlson wrote: > >> Thanks for implementing HAnimDisplacers in HAnimSegment. I thought I was >> losing my mind. >> >> But I question what happens when you put a Viewpoint inside an >> HAnimSegment. Maybe the standard needs to be clarified. >> >> No worries, I moved the Viewpoint(s) outside the Humanoid. Easy peasy! >> >> I realize if you put a camera in someone?s hand, you want the Viewpoint >> to move with the hand. Perhaps other implementors should take notice. In >> my HAnim application I don?t have any hands! >> >> John >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From joedwil at earthlink.net Tue Oct 15 15:30:19 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Tue, 15 Oct 2024 22:30:19 +0000 Subject: [x3d-public] Thanks FreeWRL! Message-ID: <73366582-9e62-6631-a58b-cb04dbc01244@earthlink.net> > Does that make a difference with segment child viewpoint? No, the viewpoints included in the Humanoid in viewpoints field and the viewpoints associated with a Segment, coded as a Site are not involved in the skinning operation. Only the Joints play a role in animation of the Humanoid skin field. I can't think of a current situation with the host where the choice of skinning (meaning using the joint skincoordindex and skincoordweight to animate the mesh) would need to be done in cpu rather than gpu. Old days without graphics accelerator? Isn't webgl everywhere? Go for GPU only, with no option. The user could turn off gpu? Thanks, Joe -----Original Message----- From: John Carlson Sent: Oct 15, 2024 2:34 PM To: GPU Group Cc: X3D Graphics public mailing list , Joe D Williams Subject: Re: Thanks FreeWRL! If you have a command line option for that, I can try it. I’m fairly non-launcher oriented. My ideal is to have X3D running in a terminal. Maybe someday. They have images over and under text these days, and shaders. Notcurses might be an approach Thanks, John On Tue, Oct 15, 2024 at 12:46?PM GPU Group wrote: On the Launcher there's an option [ ] HAnim skinning by CPU (versus default by GPU) Does that make a difference with segment child viewpoint? -Doug On Tue, Oct 15, 2024 at 11:40?AM John Carlson wrote: Thanks for implementing HAnimDisplacers in HAnimSegment. I thought I was losing my mind. But I question what happens when you put a Viewpoint inside an HAnimSegment. Maybe the standard needs to be clarified. No worries, I moved the Viewpoint(s) outside the Humanoid. Easy peasy! I realize if you put a camera in someone’s hand, you want the Viewpoint to move with the hand. Perhaps other implementors should take notice. In my HAnim application I don’t have any hands! John -------------- next part -------------- An HTML attachment was scrubbed... URL: From joedwil at earthlink.net Tue Oct 15 18:00:41 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Wed, 16 Oct 2024 01:00:41 +0000 Subject: [x3d-public] X3D futures. Inline, ROUTEs and IMPORT/EXPORT Message-ID: <71fcd5b6-ab12-1b4c-eb1f-b60a349a4eb2@earthlink.net> meaningless question. me no understand -----Original Message----- From: Extensible 3D (X3D) Graphics public discussion Sent: Oct 15, 2024 8:18 AM To: X3D Ecosystem public discussion , X3D Graphics public mailing list Cc: John Carlson Subject: [x3d-public] X3D futures. Inline, ROUTEs and IMPORT/EXPORT It seems like the legacy for X3D is Inline, ROUTEs and IMPORT/EXPORT for .glb files. When do we get these nodes working for HTML? Thanks! John _______________________________________________ x3d-public mailing list x3d-public at web3d.org http://web3d.org/mailman/listinfo/x3d-public_web3d.org From yottzumm at gmail.com Tue Oct 15 18:27:07 2024 From: yottzumm at gmail.com (John Carlson) Date: Tue, 15 Oct 2024 20:27:07 -0500 Subject: [x3d-public] X3D futures. Inline, ROUTEs and IMPORT/EXPORT In-Reply-To: <71fcd5b6-ab12-1b4c-eb1f-b60a349a4eb2@earthlink.net> References: <71fcd5b6-ab12-1b4c-eb1f-b60a349a4eb2@earthlink.net> Message-ID: I want ROUTEs and Inlines for HTML. Sure, probably possible with painful ECMAScript. The point is to have a package such that I can launch after saving as .glb. Don McCurdy solved that for me for Blender, but you smothered the conversation with BS. John On Tue, Oct 15, 2024 at 8:01?PM Joe D Williams via x3d-public < x3d-public at web3d.org> wrote: > meaningless question. > me no understand > > -----Original Message----- > From: Extensible 3D (X3D) Graphics public discussion > > Sent: Oct 15, 2024 8:18 AM > To: X3D Ecosystem public discussion , X3D > Graphics public mailing list > Cc: John Carlson > Subject: [x3d-public] X3D futures. Inline, ROUTEs and IMPORT/EXPORT > > It seems like the legacy for X3D is Inline, ROUTEs and IMPORT/EXPORT for > .glb files. When do we get these nodes working for HTML? > > Thanks! > > John > > _______________________________________________ > x3d-public mailing list > x3d-public at web3d.org > http://web3d.org/mailman/listinfo/x3d-public_web3d.org > > > > _______________________________________________ > x3d-public mailing list > x3d-public at web3d.org > http://web3d.org/mailman/listinfo/x3d-public_web3d.org > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Wed Oct 16 07:30:36 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 16 Oct 2024 09:30:36 -0500 Subject: [x3d-public] Switch of Inlines with Menu Message-ID: Does anyone have a Menu working with a Switch of Inlines? I?m not wanting to reinvent the wheel. Thanks! John -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Wed Oct 16 10:00:35 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 16 Oct 2024 12:00:35 -0500 Subject: [x3d-public] Weird URI thing in Sunrize Message-ID: Not sure what's up here. See weird URI message in Pink. File is attached for your perusal. [image: image.png] -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: image.png Type: image/png Size: 261339 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: Menu.x3d Type: model/x3d+xml Size: 6680 bytes Desc: not available URL: From yottzumm at gmail.com Wed Oct 16 13:30:44 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 16 Oct 2024 15:30:44 -0500 Subject: [x3d-public] Switch of Inlines with Menu In-Reply-To: References: Message-ID: Here you go Joe! This is working, but I'd like to include a background behind the text such that I don't have to select the text. I'm guessing some kind of code generator will do the job. It seems like lining up the background with the text could get difficult in X3D. Thanks, John On Wed, Oct 16, 2024 at 9:30?AM John Carlson wrote: > Does anyone have a Menu working with a Switch of Inlines? > > I?m not wanting to reinvent the wheel. > > Thanks! > > John > -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: Menu.x3d Type: model/x3d+xml Size: 8776 bytes Desc: not available URL: From yottzumm at gmail.com Wed Oct 16 13:39:23 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 16 Oct 2024 15:39:23 -0500 Subject: [x3d-public] Switch of Inlines with Menu In-Reply-To: References: Message-ID: Bonus points to someone who can get a Menu working cross X3D browser! Grr. Where is standards validation? Is there a standard here? Thanks! John On Wed, Oct 16, 2024 at 3:30?PM John Carlson wrote: > Here you go Joe! > > This is working, but I'd like to include a background behind the text such > that I don't have to select the text. I'm guessing some kind of code > generator will do the job. It seems like lining up the background with the > text could get difficult in X3D. > > Thanks, > > John > > On Wed, Oct 16, 2024 at 9:30?AM John Carlson wrote: > >> Does anyone have a Menu working with a Switch of Inlines? >> >> I?m not wanting to reinvent the wheel. >> >> Thanks! >> >> John >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Wed Oct 16 21:17:29 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 16 Oct 2024 23:17:29 -0500 Subject: [x3d-public] [x3dom-users] observablehq notebooks In-Reply-To: References: Message-ID: I am now revisiting this since there seem to be vim motion extensions for Jupyter Lab. I don?t know how to enable them yet, so if someone knows best practices, speak up. Also note that There are Observable modules/packages for Deno 2.0 (Node.js spelled funny, by same author, Ryan Dahl) Jupyter. Plus you can do TypeScript in Deno natively. The only issue seems to be that the Deno extension is marked unstable in documentation, and requires ?allow-all privileges. I?m done (get it? Another node anagram). On Wed, May 30, 2018 at 3:52?PM Andreas Plesch wrote: > Anybody who uses D3 may be interested in Observable notebooks at > observablehq.com. These are live, reactive documents for data > visualization, sort of like bl.ocks.org but dynamic. I noticed bl.ocks > now links to that, and the D3 author is behind this effort. > > In addition it is easy to pull in libraries, use modern js and publish > good looking pages with interactivity. > > Since D3 works great with x3dom, I thought I give it a swirl: > > https://beta.observablehq.com/@andreasplesch/x3dom > > This is just a raw starting point but useful since it was not obvious > how to pull in x3dom at first. > > Feel free to fork and play if inclined. > > x3dom has its own reactivity, eg. reacts to dom changes, so there is > some overlap which can surely be resolved. It is just nice to have a > way to package and publish a complete notebook, like Jupyter but for > any JS. There is also convenient standard library included. > > -Andreas > > > > -- > Andreas Plesch > Waltham, MA 02453 > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > X3dom-users mailing list > X3dom-users at lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/x3dom-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: From npolys at vt.edu Thu Oct 17 06:15:58 2024 From: npolys at vt.edu (Polys, Nicholas) Date: Thu, 17 Oct 2024 13:15:58 +0000 Subject: [x3d-public] [x3dom-users] observablehq notebooks In-Reply-To: References: Message-ID: This is a good convergence: https://github.com/jamesleesaunders/d3-x3d Get Outlook for Android ________________________________ From: John Carlson Sent: Thursday, October 17, 2024 12:17:29 AM To: Andreas Plesch Cc: x3dom mlist ; X3D Graphics public mailing list Subject: Re: [x3dom-users] observablehq notebooks I am now revisiting this since there seem to be vim motion extensions for Jupyter Lab. I don?t know how to enable them yet, so if someone knows best practices, speak up. Also note that There are Observable modules/packages for Deno 2.0 (Node.js spelled funny, by same author, Ryan Dahl) Jupyter. Plus you can do TypeScript in Deno natively. The only issue seems to be that the Deno extension is marked unstable in documentation, and requires ?allow-all privileges. I?m done (get it? Another node anagram). On Wed, May 30, 2018 at 3:52?PM Andreas Plesch > wrote: Anybody who uses D3 may be interested in Observable notebooks at observablehq.com. These are live, reactive documents for data visualization, sort of like bl.ocks.org but dynamic. I noticed bl.ocks now links to that, and the D3 author is behind this effort. In addition it is easy to pull in libraries, use modern js and publish good looking pages with interactivity. Since D3 works great with x3dom, I thought I give it a swirl: https://beta.observablehq.com/@andreasplesch/x3dom This is just a raw starting point but useful since it was not obvious how to pull in x3dom at first. Feel free to fork and play if inclined. x3dom has its own reactivity, eg. reacts to dom changes, so there is some overlap which can surely be resolved. It is just nice to have a way to package and publish a complete notebook, like Jupyter but for any JS. There is also convenient standard library included. -Andreas -- Andreas Plesch Waltham, MA 02453 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ X3dom-users mailing list X3dom-users at lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/x3dom-users -------------- next part -------------- An HTML attachment was scrubbed... URL: From christoph.valentin at gmx.at Thu Oct 17 13:46:29 2024 From: christoph.valentin at gmx.at (Christoph Valentin) Date: Thu, 17 Oct 2024 22:46:29 +0200 Subject: [x3d-public] At the shore Message-ID: An HTML attachment was scrubbed... URL: From joedwil at earthlink.net Thu Oct 17 18:56:45 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Fri, 18 Oct 2024 01:56:45 +0000 Subject: [x3d-public] HAnimDisplacer from CoordinateInterpolator Message-ID: <405c8ffd-4cc2-3082-c6dc-17ce53a078aa@earthlink.net> Hi Don, as my Ai helped explain to me: To get the displacements from CoordinateInterpolators, identify the coordinates at time0 and time1 for each point: Let’s say at time0, the coordinates are ((x_0, y_0, z_0)). At time1, the coordinates are ((x_1, y_1, z_1)). Compute the displacement vector: Use the formula: (vec{v} = (x_1 - x_0, y_1 - y_0, z_1 - z_0)). For instance, if you have the following coordinates: At time0: ((2, 3, 4)) At time1: ((5, 7, 9)) The displacement vector would be: [ vec{v} = (5 - 2, 7 - 3, 9 - 4) = (3, 4, 5) ] This vector (vec{v}) represents the change in position from time0 to time1. Finally create two lists, the coordIndex for each index of point to be animated and a corresponding second displacements list in order of the indices. Now send 0 to 1 input to weight to scale the value added to the point relative 2 its current position. There are some fine points to this relating to the point coordsys at default pose but since the point, like the Joint maintains its initial body coordinate system when animated from default pose, it works fine and as expected. I'm wanting to send a representative example soon. Right now I am looking at the FACS AU46 left eye wink morpher interpolator. Overall, taking these base FACS examples working them into a single file with a menu and making some logic to select the correct Displacers to operate for each expression would help make these examples useful. Thanks and All Best, Joe From joedwil at earthlink.net Mon Oct 21 05:03:55 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Mon, 21 Oct 2024 12:03:55 +0000 Subject: [x3d-public] =?utf-8?q?physics_and_cloth?= Message-ID: <8feb55df-096a-0855-399d-eb35d22ab9d1@earthlink.net> https://www.youtube.com/watch?v=ePid-iXvTTE physics and cloth From joedwil at earthlink.net Mon Oct 21 05:04:06 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Mon, 21 Oct 2024 12:04:06 +0000 Subject: [x3d-public] =?utf-8?q?physics_and_cloth?= Message-ID: <1cbc1351-2b96-8a9d-652a-b8e6132676d0@earthlink.net> https://www.youtube.com/watch?v=ePid-iXvTTE physics and cloth From yottzumm at gmail.com Mon Oct 21 06:03:21 2024 From: yottzumm at gmail.com (John Carlson) Date: Mon, 21 Oct 2024 08:03:21 -0500 Subject: [x3d-public] physics and cloth In-Reply-To: <1cbc1351-2b96-8a9d-652a-b8e6132676d0@earthlink.net> References: <1cbc1351-2b96-8a9d-652a-b8e6132676d0@earthlink.net> Message-ID: Thoughts: how does this compare to mocap + ai, like momask? How does mocap work over ages? Yay, armature in blender, how do we put this presented information in X3D/hanim/gltf so we can import? I saw the physics stuff in x3d. How do we get physics into blender import export? Examples? I?m not familiar with physics in blender? I?ll get to the Blender pull request review from Bujus today, I hope. Schema is not perfect. CGE has an editor. On Mon, Oct 21, 2024 at 7:05?AM Joe D Williams via x3d-public < x3d-public at web3d.org> wrote: > https://www.youtube.com/watch?v=ePid-iXvTTE > > physics and cloth > > > _______________________________________________ > x3d-public mailing list > x3d-public at web3d.org > http://web3d.org/mailman/listinfo/x3d-public_web3d.org > -------------- next part -------------- An HTML attachment was scrubbed... URL: From joedwil at earthlink.net Mon Oct 21 17:04:58 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Tue, 22 Oct 2024 00:04:58 +0000 Subject: [x3d-public] Blend Shapes Message-ID: <3eb72777-a11f-a45c-b90f-fa211f3f3903@earthlink.net> Just as an update to this, in Blender we see BlendShapes in two styles, Absolute and Relative. BlendShapes Absolute presents the process of a CoordinateInterpolator that deforms or morphs the complete mesh, by allowing author to create a base mesh, then additional mesh shapes times for the complete shape moves from the base shape through various key shapes with intermediate values allowing several styles of interpolation. BlendShapes Relative allows picking out all or a subset or mesh points to be moved relative to current mesh points location according to a scalar input. So, the only difference between Blender and X3D is the style of naming the values. . BlendShape Absolute, it seems like internal data for coordinate points, the X3D keyValue field, and the timer, or weight, the X3d key, could be easily exported. the big problem is that Blender allows several interpolation maths other than linear. Is it time to intrudce other interpolation maths to X3D? BlendShape Relative, the Blender data is basically the same as for X3D Displacer, consisting of a the list of mesh indices to be operated on, a corresponding list of 3d vectors to be drawn relative to the current mesh points, and a weight input. the biggest difference in the Blendier implementation is that the weight is allowed to be less than zero and greater than 1 and the Blender tool does extrapolation to find the actual value. This weight overrange feature could be very useful when adapting one setup to another in a similar setup. Thanks and Best, Joe ---Original Message----- From: Joe D Williams Sent: Oct 3, 2024 11:03 AM To: Myeong Won Lee , Brutzman Donald (Don) (CIV) , , Cc: WILLIAM GLASCOE , , , Joe Williams Subject: Blend Shapes As we hear more of high level authoring systems used in entertainment, such as USD,we encounter the term Blend Shapes or blendshapes, etc. Under the covers this is an alternative to skeleton-driven deformable mesh animation where the points are moved according to a weighted function that takes into consideration the motion of associated Joint nodes that could produce direct action on a vertex. Dependence on this style for detailed animation of individual points or groups of points results in networks of skeleton hierarchy rigs in order to produce shape deformations like lip movements or other muscle simulations. Overall, these structures are interesting and can solve some interesting mesh animation problems it becomes difficult to produce standardizable compositions. Besides, a better tool that can operate with or independently of the skeletal animations. One obvious solution is to add CoordinateInterpolator(s) to move points of the mesh. Here the basic problem is that you must deal with the entire target mesh for every key and it becomes a special case to combine the effects of multiple interpolators on the same mesh. I think the basic two ways to think about it is the idea of working with a complete mesh and/or just some part(s) of it, a sparse set, an area of points of the same target mesh. In reality, you want these skeleton-driven and these additional independent deformations to be summed so we get the complete animation. For instance we would say that for each frame, animation produced by the added displacements are added after all skeleton-driven point animation is complete. So, with this problem of simulating geometry and parts of geometry morphing from shape to shape under control of some set of Joint nodes along with producing surface movements more or less independently while innovating a design that gets rid of cumbersome Coordinate Interpolator operations, HAnim documented an animation form that lots agreed that this was a best practice, easily standardizable technique. interface Displacer { coordIndex [ list of indices ] description "Some Functionality" displacements [ list of 3D vectors ] name "required name" weight 0 } The coordIndex field contains a list of all coordinate index values of the target mesh be animated by this Displacer. The index is the order in which the point to appears in the user code. If only points 57, 58, and 59 were to be animated then the coordIndex field would be: coordIndex [56 57 58] The displacements field contains a list of 3D vectors that represent the maximum movement from the default or magicallly enough whatever the current location of that point is. Now, to master this you must understand that a point has its own local coordinate system. Like the default coordinate system of a Joint, a point in default, before animation, is the same as its parent Joint, 0 0 1 0]. This means that let's say that those three points are the tip of a finger and the objective is to move those points directly outward 0.01 unit then the vectors would be: displacements [0 -0.01 0, 0 -0.01 0, 0 -0.01 0] Now the weight field receives a 0 to1 floating point value that linearly scales the output vector. If zero,then no added movement; if 0.5 then one-half,and if 1, then maximum. If 1 is received,then the point will be moved -0.01 unit in the point's Y-axis of the geometry coordinate system. A way to compute the displacements value is if you happened to have a CoordinateInterplator you wanted to get rid of is to find the coordinates of the point at minimum, key input 0, and maximum, key input 1, then find the 3D vector that connects those locations. If you are finding these values by examination, then a major consideration is that you want to set these up understanding the default point coordinate system. So, finally,why did HAnim call it a Displacer? Well, there were a couple of names offered and the HAnim folks just had to pick something different from anyone was actually showing. The idea of a Displacer is very clear, you are telling it to displace a point from its current location in some direction relative to its default coordinate system. In summary, seems to me the idea of terms I have heard like deformer, morpher, blended shapes, and others all can be represented by the functionality of HAnim Displacer. I hope that is good news. Thanks and Fun, Joe From joedwil at earthlink.net Mon Oct 21 17:07:27 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Tue, 22 Oct 2024 00:07:27 +0000 Subject: [x3d-public] Fw: Re: Blend Shapes Message-ID: -----Forwarded Message----- From: Joe D Williams Sent: Oct 21, 2024 5:04 PM Subject: Re: Blend Shapes Just as an update to this, in Blender we see BlendShapes in two styles, Absolute and Relative. BlendShapes Absolute presents the process of a CoordinateInterpolator that deforms or morphs the complete mesh, by allowing author to create a base mesh, then additional mesh shapes times for the complete shape moves from the base shape through various key shapes with intermediate values allowing several styles of interpolation. BlendShapes Relative allows picking out all or a subset or mesh points to be moved relative to current mesh points location according to a scalar input. So, the only difference between Blender and X3D is the style of naming the values. . BlendShape Absolute, it seems like internal data for coordinate points, the X3D keyValue field, and the timer, or weight, the X3d key, could be easily exported. the big problem is that Blender allows several interpolation maths other than linear. Is it time to intrudce other interpolation maths to X3D? BlendShape Relative, the Blender data is basically the same as for X3D Displacer, consisting of a the list of mesh indices to be operated on, a corresponding list of 3d vectors to be drawn relative to the current mesh points, and a weight input. the biggest difference in the Blendier implementation is that the weight is allowed to be less than zero and greater than 1 and the Blender tool does extrapolation to find the actual value. This weight overrange feature could be very useful when adapting one setup to another in a similar setup. Thanks and Best, Joe ---Original Message----- From: Joe D Williams Sent: Oct 3, 2024 11:03 AM To: Myeong Won Lee , Brutzman Donald (Don) (CIV) , , Cc: WILLIAM GLASCOE , , , Joe Williams Subject: Blend Shapes As we hear more of high level authoring systems used in entertainment, such as USD,we encounter the term Blend Shapes or blendshapes, etc. Under the covers this is an alternative to skeleton-driven deformable mesh animation where the points are moved according to a weighted function that takes into consideration the motion of associated Joint nodes that could produce direct action on a vertex. Dependence on this style for detailed animation of individual points or groups of points results in networks of skeleton hierarchy rigs in order to produce shape deformations like lip movements or other muscle simulations. Overall, these structures are interesting and can solve some interesting mesh animation problems it becomes difficult to produce standardizable compositions. Besides, a better tool that can operate with or independently of the skeletal animations. One obvious solution is to add CoordinateInterpolator(s) to move points of the mesh. Here the basic problem is that you must deal with the entire target mesh for every key and it becomes a special case to combine the effects of multiple interpolators on the same mesh. I think the basic two ways to think about it is the idea of working with a complete mesh and/or just some part(s) of it, a sparse set, an area of points of the same target mesh. In reality, you want these skeleton-driven and these additional independent deformations to be summed so we get the complete animation. For instance we would say that for each frame, animation produced by the added displacements are added after all skeleton-driven point animation is complete. So, with this problem of simulating geometry and parts of geometry morphing from shape to shape under control of some set of Joint nodes along with producing surface movements more or less independently while innovating a design that gets rid of cumbersome Coordinate Interpolator operations, HAnim documented an animation form that lots agreed that this was a best practice, easily standardizable technique. interface Displacer { coordIndex [ list of indices ] description "Some Functionality" displacements [ list of 3D vectors ] name "required name" weight 0 } The coordIndex field contains a list of all coordinate index values of the target mesh be animated by this Displacer. The index is the order in which the point to appears in the user code. If only points 57, 58, and 59 were to be animated then the coordIndex field would be: coordIndex [56 57 58] The displacements field contains a list of 3D vectors that represent the maximum movement from the default or magicallly enough whatever the current location of that point is. Now, to master this you must understand that a point has its own local coordinate system. Like the default coordinate system of a Joint, a point in default, before animation, is the same as its parent Joint, 0 0 1 0]. This means that let's say that those three points are the tip of a finger and the objective is to move those points directly outward 0.01 unit then the vectors would be: displacements [0 -0.01 0, 0 -0.01 0, 0 -0.01 0] Now the weight field receives a 0 to1 floating point value that linearly scales the output vector. If zero,then no added movement; if 0.5 then one-half,and if 1, then maximum. If 1 is received,then the point will be moved -0.01 unit in the point's Y-axis of the geometry coordinate system. A way to compute the displacements value is if you happened to have a CoordinateInterplator you wanted to get rid of is to find the coordinates of the point at minimum, key input 0, and maximum, key input 1, then find the 3D vector that connects those locations. If you are finding these values by examination, then a major consideration is that you want to set these up understanding the default point coordinate system. So, finally,why did HAnim call it a Displacer? Well, there were a couple of names offered and the HAnim folks just had to pick something different from anyone was actually showing. The idea of a Displacer is very clear, you are telling it to displace a point from its current location in some direction relative to its default coordinate system. In summary, seems to me the idea of terms I have heard like deformer, morpher, blended shapes, and others all can be represented by the functionality of HAnim Displacer. I hope that is good news. Thanks and Fun, Joe From joedwil at earthlink.net Wed Oct 23 17:28:17 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Thu, 24 Oct 2024 00:28:17 +0000 Subject: [x3d-public] mocap of a physics-equipped character and garment fitting Message-ID: <008c6dfc-a64f-5b14-4cc4-36cad189e17a@earthlink.net> https://www.youtube.com/watch?v=ePid-iXvTTE From joedwil at earthlink.net Wed Oct 23 17:46:19 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Thu, 24 Oct 2024 00:46:19 +0000 Subject: [x3d-public] mocap of a physics-equipped character and garment fitting Message-ID: <88061596-7081-babc-43a2-7c9b0b715a22@earthlink.net> https://www.reallusion.com/character-creator/blender.html The tool for mocap of a mocap. A free trial. https://www.youtube.com/watch?v=ePid-iXvTTE Showing the operation plus some clothing fitment. Joe -----Original Message----- From: Extensible 3D (X3D) Graphics public discussion Sent: Oct 23, 2024 5:29 PM To: , , Cc: Joe D Williams Subject: [x3d-public] mocap of a physics-equipped character and garment fitting https://www.youtube.com/watch?v=ePid-iXvTTE _______________________________________________ x3d-public mailing list x3d-public at web3d.org http://web3d.org/mailman/listinfo/x3d-public_web3d.org From yottzumm at gmail.com Fri Oct 25 18:38:53 2024 From: yottzumm at gmail.com (John Carlson) Date: Fri, 25 Oct 2024 20:38:53 -0500 Subject: [x3d-public] SAI question. Generating networking stubs and skeleton Message-ID: I?d like to generate an SAI network stack in lieu of using DIS. That is, I want the Nim language to control Castle Game Engine externally. Ultimately, we might use this inside of Blender to send data to CGE. The question is, is there information which is from the standard in computer processable form, like X3DUOM to generate SAI code? Something like IDL? I?m not a fan of sending JavaScript over the network, even CPPON is preferred. Thanks, John -------------- next part -------------- An HTML attachment was scrubbed... URL: From joedwil at earthlink.net Sun Oct 27 16:26:04 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Sun, 27 Oct 2024 23:26:04 +0000 Subject: [x3d-public] Fw: Re: Blend Shapes and x3d Animation tools Message-ID: <03d71188-8bbc-5743-54ed-f9e6db2ae8ee@earthlink.net> More to mention some ideas about Displacer. Again, I am thinking that the x3d CoordinateInterpolator deals with the entire, all points, of the shape, while the Displacer can move one or more points in a defined direction under control of a scalar 0 to to 1 input. The CoordinateIinterpolator provides a complete set of coordinates, a keyValue, for each key time. The Displacer provides a 3D vector, the displacements, for each point, the coordIndex, of the point to be controlled by the 0 to 1 scalar input, the weight. So, when is the CoordinateInterpolator preferred over Displacer? Well, first is that for the Displacer, we get a linear interpolation for movement added by the weight. This means if you don't wish a linear motion with a linear weight input, then we must adapt the weight input to the motion curve we wish. Same for the CoordinateInterpolator if only two keyValue fields are used, one for time0 and one for time1, with a standard time input, we would get a linear interpolation, or the 0 to1 fraction_changed input could scale the 0 to 1 input to achieve a custom deformation curve, as with the Displacer. However, what if the vertex movement may not be totally composed of a linear motion, but is a real 3D curve in time and space? With x3d Humanoid we have some choices. First, an example of a humanoid eyelid where the center of rotation and desired arc is well understood. Here a simple choice is to bind the eyelid vertices to an eyelid joint, then rotate the joint as required to produce the desired movement. Also,, a coordinate interpolator can be used, but containing several keyValue sets list to produce the motion. Probably at least one intermediate set of points. Next, it might be unlikely that the Displacer as is specified now could handle this motion of an eyelid that is by its std orientation and path, probably following a curved path in Y and Z. Since the displacer only can deliver a varying magnitude of a fixed orientation vector then a motion curve for a point in more than one direction may not be possible. One added point I learned is that the Blender Relative mode can accept the weight input greater than 1 and less than zero and the tool will extrapolate along the given vector. This can be very useful, it might seem, for when we want to reuse a Displacer and it is similar enough to another and we could just change the input scale say from 0 to1 to 0.05 to1.25 without having to edit the actual set of vectors. This sounds easy and convenient but probably has some down sides in a close simulation. I think we could recommend a differnt sort of hackforthis. While the Displacer is offered as a substitute for coordinate interpolators and reall canhelp tosimplify the user code in many situations. So,realtime runtime. Does this set of features offer the opportunity to think about how to update the Displacer? For example (1) to allow multiple keys and vector sets so that more complex point motions can be presented? How about (2) extending the weight input range to less than 0 and greater than 1 and the runtime extrapolates? Thanks and Best, Joe -----Original Message----- From: Joe D Williams Sent: Oct 21, 2024 5:07 PM To: , Subject: Fw: Re: Blend Shapes -----Forwarded Message----- From: Joe D Williams Sent: Oct 21, 2024 5:04 PM Subject: Re: Blend Shapes Just as an update to this, in Blender we see BlendShapes in two styles, Absolute and Relative. BlendShapes Absolute presents the process of a CoordinateInterpolator that deforms or morphs the complete mesh, by allowing author to create a base mesh, then additional mesh shapes times for the complete shape moves from the base shape through various key shapes with intermediate values allowing several styles of interpolation. BlendShapes Relative allows picking out all or a subset or mesh points to be moved relative to current mesh points location according to a scalar input. So, the only difference between Blender and X3D is the style of naming the values. . BlendShape Absolute, it seems like internal data for coordinate points, the X3D keyValue field, and the timer, or weight, the X3d key, could be easily exported. the big problem is that Blender allows several interpolation maths other than linear. Is it time to intrudce other interpolation maths to X3D? BlendShape Relative, the Blender data is basically the same as for X3D Displacer, consisting of a the list of mesh indices to be operated on, a corresponding list of 3d vectors to be drawn relative to the current mesh points, and a weight input. the biggest difference in the Blendier implementation is that the weight is allowed to be less than zero and greater than 1 and the Blender tool does extrapolation to find the actual value. This weight overrange feature could be very useful when adapting one setup to another in a similar setup. Thanks and Best, Joe ---Original Message----- From: Joe D Williams Sent: Oct 3, 2024 11:03 AM To: Myeong Won Lee , Brutzman Donald (Don) (CIV) , , Cc: WILLIAM GLASCOE , , , Joe Williams Subject: Blend Shapes As we hear more of high level authoring systems used in entertainment, such as USD,we encounter the term Blend Shapes or blendshapes, etc. Under the covers this is an alternative to skeleton-driven deformable mesh animation where the points are moved according to a weighted function that takes into consideration the motion of associated Joint nodes that could produce direct action on a vertex. Dependence on this style for detailed animation of individual points or groups of points results in networks of skeleton hierarchy rigs in order to produce shape deformations like lip movements or other muscle simulations. Overall, these structures are interesting and can solve some interesting mesh animation problems it becomes difficult to produce standardizable compositions. Besides, a better tool that can operate with or independently of the skeletal animations. One obvious solution is to add CoordinateInterpolator(s) to move points of the mesh. Here the basic problem is that you must deal with the entire target mesh for every key and it becomes a special case to combine the effects of multiple interpolators on the same mesh. I think the basic two ways to think about it is the idea of working with a complete mesh and/or just some part(s) of it, a sparse set, an area of points of the same target mesh. In reality, you want these skeleton-driven and these additional independent deformations to be summed so we get the complete animation. For instance we would say that for each frame, animation produced by the added displacements are added after all skeleton-driven point animation is complete. So, with this problem of simulating geometry and parts of geometry morphing from shape to shape under control of some set of Joint nodes along with producing surface movements more or less independently while innovating a design that gets rid of cumbersome Coordinate Interpolator operations, HAnim documented an animation form that lots agreed that this was a best practice, easily standardizable technique. interface Displacer { coordIndex [ list of indices ] description "Some Functionality" displacements [ list of 3D vectors ] name "required name" weight 0 } The coordIndex field contains a list of all coordinate index values of the target mesh be animated by this Displacer. The index is the order in which the point to appears in the user code. If only points 57, 58, and 59 were to be animated then the coordIndex field would be: coordIndex [56 57 58] The displacements field contains a list of 3D vectors that represent the maximum movement from the default or magicallly enough whatever the current location of that point is. Now, to master this you must understand that a point has its own local coordinate system. Like the default coordinate system of a Joint, a point in default, before animation, is the same as its parent Joint, 0 0 1 0]. This means that let's say that those three points are the tip of a finger and the objective is to move those points directly outward 0.01 unit then the vectors would be: displacements [0 -0.01 0, 0 -0.01 0, 0 -0.01 0] Now the weight field receives a 0 to1 floating point value that linearly scales the output vector. If zero,then no added movement; if 0.5 then one-half,and if 1, then maximum. If 1 is received,then the point will be moved -0.01 unit in the point's Y-axis of the geometry coordinate system. A way to compute the displacements value is if you happened to have a CoordinateInterplator you wanted to get rid of is to find the coordinates of the point at minimum, key input 0, and maximum, key input 1, then find the 3D vector that connects those locations. If you are finding these values by examination, then a major consideration is that you want to set these up understanding the default point coordinate system. So, finally,why did HAnim call it a Displacer? Well, there were a couple of names offered and the HAnim folks just had to pick something different from anyone was actually showing. The idea of a Displacer is very clear, you are telling it to displace a point from its current location in some direction relative to its default coordinate system. In summary, seems to me the idea of terms I have heard like deformer, morpher, blended shapes, and others all can be represented by the functionality of HAnim Displacer. I hope that is good news. Thanks and Fun, Joe From yottzumm at gmail.com Sun Oct 27 20:10:42 2024 From: yottzumm at gmail.com (John Carlson) Date: Sun, 27 Oct 2024 22:10:42 -0500 Subject: [x3d-public] Fw: Re: Blend Shapes and x3d Animation tools In-Reply-To: <03d71188-8bbc-5743-54ed-f9e6db2ae8ee@earthlink.net> References: <03d71188-8bbc-5743-54ed-f9e6db2ae8ee@earthlink.net> Message-ID: Possibility: Adding a coordIndex more than once in an HAnimDisplacer. Just define what it means when a coordindex appears more than once. Possibility: change the displacements with another interpolator. John On Sun, Oct 27, 2024 at 6:27?PM Joe D Williams via x3d-public < x3d-public at web3d.org> wrote: > More to mention some ideas about Displacer. Again, I am thinking that the > x3d CoordinateInterpolator deals with the entire, all points, of the shape, > while the Displacer can move one or more points in a defined direction > under control of a scalar 0 to to 1 input. > > The CoordinateIinterpolator provides a complete set of coordinates, a > keyValue, for each key time. > > The Displacer provides a 3D vector, the displacements, for each point, the > coordIndex, of the point to be controlled by the 0 to 1 scalar input, the > weight. > > So, when is the CoordinateInterpolator preferred over Displacer? > > Well, first is that for the Displacer, we get a linear interpolation for > movement added by the weight. This means if you don't wish a linear motion > with a linear weight input, then we must adapt the weight input to the > motion curve we wish. > > Same for the CoordinateInterpolator if only two keyValue fields are used, > one for time0 and one for time1, with a standard time input, we would get a > linear interpolation, or the 0 to1 fraction_changed input could scale the 0 > to 1 input to achieve a custom deformation curve, as with the Displacer. > > However, what if the vertex movement may not be totally composed of a > linear motion, but is a real 3D curve in time and space? With x3d Humanoid > we have some choices. > > First, an example of a humanoid eyelid where the center of rotation and > desired arc is well understood. Here a simple choice is to bind the eyelid > vertices to an eyelid joint, then rotate the joint as required to produce > the desired movement. > > Also,, a coordinate interpolator can be used, but containing several > keyValue sets list to produce the motion. Probably at least one > intermediate set of points. > > Next, it might be unlikely that the Displacer as is specified now could > handle this motion of an eyelid that is by its std orientation and path, > probably following a curved path in Y and Z. Since the displacer only can > deliver a varying magnitude of a fixed orientation vector then a motion > curve for a point in more than one direction may not be possible. > > One added point I learned is that the Blender Relative mode can accept the > weight input greater than 1 and less than zero and the tool will > extrapolate along the given vector. This can be very useful, it might > seem, for when we want to reuse a Displacer and it is similar enough to > another and we could just change the input scale say from 0 to1 to 0.05 > to1.25 without having to edit the actual set of vectors. This sounds easy > and convenient but probably has some down sides in a close simulation. I > think we could recommend a differnt sort of hackforthis. > > While the Displacer is offered as a substitute for coordinate > interpolators and reall canhelp tosimplify the user code in many > situations. So,realtime runtime. > > Does this set of features offer the opportunity to think about how to > update the Displacer? > For example > (1) to allow multiple keys and vector sets so that more complex point > motions can be presented? How about > (2) extending the weight input range to less than 0 and greater than 1 and > the runtime extrapolates? > > Thanks and Best, > Joe > > > -----Original Message----- > From: Joe D Williams > Sent: Oct 21, 2024 5:07 PM > To: , > Subject: Fw: Re: Blend Shapes > > > -----Forwarded Message----- > From: Joe D Williams > Sent: Oct 21, 2024 5:04 PM > Subject: Re: Blend Shapes > > Just as an update to this, in Blender we see BlendShapes in two styles, > Absolute and Relative. > > BlendShapes Absolute presents the process of a CoordinateInterpolator that > deforms or morphs the complete mesh, by allowing author to create a base > mesh, then additional mesh shapes times for the complete shape moves from > the base shape through various key shapes with intermediate values allowing > several styles of interpolation. > > BlendShapes Relative allows picking out all or a subset or mesh points to > be moved relative to current mesh points location according to a scalar > input. > > So, the only difference between Blender and X3D is the style of naming the > values. . > > BlendShape Absolute, it seems like internal data for coordinate points, > the X3D keyValue field, and the timer, or weight, the X3d key, could be > easily exported. the big problem is that Blender allows several > interpolation maths other than linear. Is it time to intrudce other > interpolation maths to X3D? > > BlendShape Relative, the Blender data is basically the same as for X3D > Displacer, consisting of a the list of mesh indices to be operated on, a > corresponding list of 3d vectors to be drawn relative to the current mesh > points, and a weight input. the biggest difference in the Blendier > implementation is that the weight is allowed to be less than zero and > greater than 1 and the Blender tool does extrapolation to find the actual > value. This weight overrange feature could be very useful when adapting one > setup to another in a similar setup. > > Thanks and Best, > Joe > > > ---Original Message----- > From: Joe D Williams > Sent: Oct 3, 2024 11:03 AM > To: Myeong Won Lee , Brutzman Donald (Don) (CIV) , , > Cc: WILLIAM GLASCOE , , , Joe Williams > Subject: Blend Shapes > > As we hear more of high level authoring systems used in entertainment, > such as USD,we encounter the term Blend Shapes or blendshapes, etc. > Under the covers this is an alternative to skeleton-driven deformable mesh > animation where the points are moved according to a weighted function that > takes into consideration the motion of associated Joint nodes that could > produce direct action on a vertex. > > Dependence on this style for detailed animation of individual points or > groups of points results in networks of skeleton hierarchy rigs in order to > produce shape deformations like lip movements or other muscle simulations. > Overall, these structures are interesting and can solve some interesting > mesh animation problems it becomes difficult to produce standardizable > compositions. > Besides, a better tool that can operate with or independently of the > skeletal animations. > > One obvious solution is to add CoordinateInterpolator(s) to move points of > the mesh. Here the basic problem is that you must > deal with the entire target mesh for every key and it becomes a special > case to combine the effects of multiple interpolators on the same mesh. > I think the basic two ways to think about it is the idea of working with a > complete mesh and/or just some part(s) of it, a sparse set, an area of > points of the same target mesh. > > In reality, you want these skeleton-driven and these additional > independent deformations to be summed so we get the complete animation. > For instance we would say that for each frame, animation produced by the > added displacements are added after all skeleton-driven point animation is > complete. > > So, with this problem of simulating geometry and parts of geometry > morphing from shape to shape under control of some set of Joint nodes along > with producing surface movements more or less independently while > innovating a design that gets rid of cumbersome Coordinate Interpolator > operations, HAnim documented an animation form that lots agreed that this > was a best practice, easily standardizable technique. > > interface Displacer { > coordIndex [ list of indices ] > description "Some Functionality" > displacements [ list of 3D vectors ] > name "required name" > weight 0 } > > The coordIndex field contains a list of all coordinate index values of the > target mesh be animated by this Displacer. The index is the order in which > the point to appears in the user code. If only points 57, 58, and 59 were > to be animated then the coordIndex field would be: > coordIndex [56 57 58] > > The displacements field contains a list of 3D vectors that represent the > maximum movement from the default or magicallly enough whatever the current > location of that point is. Now, to master this you must understand that a > point has its own local coordinate system. Like the default coordinate > system of a Joint, a point in default, before animation, is the same as its > parent Joint, 0 0 1 0]. This means that let's say that those three points > are the tip of a finger and the objective is to move those points directly > outward 0.01 unit then the vectors would be: > displacements [0 -0.01 0, 0 -0.01 0, 0 -0.01 0] > > Now the weight field receives a 0 to1 floating point value that linearly > scales the output vector. If zero,then no added movement; if 0.5 then > one-half,and if 1, then maximum. If 1 is received,then the point will be > moved -0.01 unit in the point's Y-axis of the geometry coordinate system. > > A way to compute the displacements value is if you happened to have a > CoordinateInterplator you wanted to get rid of is to find the coordinates > of the point at minimum, key input 0, and maximum, key input 1, then find > the 3D vector that connects those locations. If you are finding these > values by examination, then a major consideration is that you want to set > these up understanding the default point coordinate system. > > So, finally,why did HAnim call it a Displacer? Well, there were a couple > of names offered and the HAnim folks just had to pick something different > from anyone was actually showing. The idea of a Displacer is very clear, > you are telling it to displace a point from its current location in some > direction relative to its default coordinate system. > > In summary, seems to me the idea of terms I have heard like deformer, > morpher, blended shapes, and others all can be represented by the > functionality of HAnim Displacer. I hope that is good news. > > Thanks and Fun, > Joe > > > > > > > > > > _______________________________________________ > x3d-public mailing list > x3d-public at web3d.org > http://web3d.org/mailman/listinfo/x3d-public_web3d.org > -------------- next part -------------- An HTML attachment was scrubbed... URL: From joedwil at earthlink.net Sun Oct 27 21:35:14 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Mon, 28 Oct 2024 04:35:14 +0000 Subject: [x3d-public] Fw: Re: Blend Shapes and x3d Animation tools Message-ID: <254435a0-afe9-d8a9-09c0-e8f587b50b61@earthlink.net> inline below -----Original Message----- From: Extensible 3D (X3D) Graphics public discussion Sent: Oct 27, 2024 8:11 PM To: Extensible 3D (X3D) Graphics public discussion Cc: John Carlson Subject: Re: [x3d-public] Fw: Re: Blend Shapes and x3d Animation tools > Possibility: Adding a coordIndex more than once in an HAnimDisplacer. Just define what it means when a coordindex appears more than once. No please to duplicate coordIndex values. > Possibility: change the displacements with another interpolator. Well, we do notice that the displacements can be updated at will and new values will be generated for the next frame. > John Joe On Sun, Oct 27, 2024 at 6:27?PM Joe D Williams via x3d-public wrote: More to mention some ideas about Displacer. Again, I am thinking that the x3d CoordinateInterpolator deals with the entire, all points, of the shape, while the Displacer can move one or more points in a defined direction under control of a scalar 0 to to 1 input. The CoordinateIinterpolator provides a complete set of coordinates, a keyValue, for each key time. The Displacer provides a 3D vector, the displacements, for each point, the coordIndex, of the point to be controlled by the 0 to 1 scalar input, the weight. So, when is the CoordinateInterpolator preferred over Displacer? Well, first is that for the Displacer, we get a linear interpolation for movement added by the weight. This means if you don't wish a linear motion with a linear weight input, then we must adapt the weight input to the motion curve we wish. Same for the CoordinateInterpolator if only two keyValue fields are used, one for time0 and one for time1, with a standard time input, we would get a linear interpolation, or the 0 to1 fraction_changed input could scale the 0 to 1 input to achieve a custom deformation curve, as with the Displacer. However, what if the vertex movement may not be totally composed of a linear motion, but is a real 3D curve in time and space? With x3d Humanoid we have some choices. First, an example of a humanoid eyelid where the center of rotation and desired arc is well understood. Here a simple choice is to bind the eyelid vertices to an eyelid joint, then rotate the joint as required to produce the desired movement. Also,, a coordinate interpolator can be used, but containing several keyValue sets list to produce the motion. Probably at least one intermediate set of points. Next, it might be unlikely that the Displacer as is specified now could handle this motion of an eyelid that is by its std orientation and path, probably following a curved path in Y and Z. Since the displacer only can deliver a varying magnitude of a fixed orientation vector then a motion curve for a point in more than one direction may not be possible. One added point I learned is that the Blender Relative mode can accept the weight input greater than 1 and less than zero and the tool will extrapolate along the given vector. This can be very useful, it might seem, for when we want to reuse a Displacer and it is similar enough to another and we could just change the input scale say from 0 to1 to 0.05 to1.25 without having to edit the actual set of vectors. This sounds easy and convenient but probably has some down sides in a close simulation. I think we could recommend a differnt sort of hackforthis. While the Displacer is offered as a substitute for coordinate interpolators and reall canhelp tosimplify the user code in many situations. So,realtime runtime. Does this set of features offer the opportunity to think about how to update the Displacer? For example (1) to allow multiple keys and vector sets so that more complex point motions can be presented? How about (2) extending the weight input range to less than 0 and greater than 1 and the runtime extrapolates? Thanks and Best, Joe -----Original Message----- From: Joe D Williams Sent: Oct 21, 2024 5:07 PM To: , Subject: Fw: Re: Blend Shapes -----Forwarded Message----- From: Joe D Williams Sent: Oct 21, 2024 5:04 PM Subject: Re: Blend Shapes Just as an update to this, in Blender we see BlendShapes in two styles, Absolute and Relative. BlendShapes Absolute presents the process of a CoordinateInterpolator that deforms or morphs the complete mesh, by allowing author to create a base mesh, then additional mesh shapes times for the complete shape moves from the base shape through various key shapes with intermediate values allowing several styles of interpolation. BlendShapes Relative allows picking out all or a subset or mesh points to be moved relative to current mesh points location according to a scalar input. So, the only difference between Blender and X3D is the style of naming the values. . BlendShape Absolute, it seems like internal data for coordinate points, the X3D keyValue field, and the timer, or weight, the X3d key, could be easily exported. the big problem is that Blender allows several interpolation maths other than linear. Is it time to intrudce other interpolation maths to X3D? BlendShape Relative, the Blender data is basically the same as for X3D Displacer, consisting of a the list of mesh indices to be operated on, a corresponding list of 3d vectors to be drawn relative to the current mesh points, and a weight input. the biggest difference in the Blendier implementation is that the weight is allowed to be less than zero and greater than 1 and the Blender tool does extrapolation to find the actual value. This weight overrange feature could be very useful when adapting one setup to another in a similar setup. Thanks and Best, Joe ---Original Message----- From: Joe D Williams Sent: Oct 3, 2024 11:03 AM To: Myeong Won Lee , Brutzman Donald (Don) (CIV) , , Cc: WILLIAM GLASCOE , , , Joe Williams Subject: Blend Shapes As we hear more of high level authoring systems used in entertainment, such as USD,we encounter the term Blend Shapes or blendshapes, etc. Under the covers this is an alternative to skeleton-driven deformable mesh animation where the points are moved according to a weighted function that takes into consideration the motion of associated Joint nodes that could produce direct action on a vertex. Dependence on this style for detailed animation of individual points or groups of points results in networks of skeleton hierarchy rigs in order to produce shape deformations like lip movements or other muscle simulations. Overall, these structures are interesting and can solve some interesting mesh animation problems it becomes difficult to produce standardizable compositions. Besides, a better tool that can operate with or independently of the skeletal animations. One obvious solution is to add CoordinateInterpolator(s) to move points of the mesh. Here the basic problem is that you must deal with the entire target mesh for every key and it becomes a special case to combine the effects of multiple interpolators on the same mesh. I think the basic two ways to think about it is the idea of working with a complete mesh and/or just some part(s) of it, a sparse set, an area of points of the same target mesh. In reality, you want these skeleton-driven and these additional independent deformations to be summed so we get the complete animation. For instance we would say that for each frame, animation produced by the added displacements are added after all skeleton-driven point animation is complete. So, with this problem of simulating geometry and parts of geometry morphing from shape to shape under control of some set of Joint nodes along with producing surface movements more or less independently while innovating a design that gets rid of cumbersome Coordinate Interpolator operations, HAnim documented an animation form that lots agreed that this was a best practice, easily standardizable technique. interface Displacer { coordIndex [ list of indices ] description "Some Functionality" displacements [ list of 3D vectors ] name "required name" weight 0 } The coordIndex field contains a list of all coordinate index values of the target mesh be animated by this Displacer. The index is the order in which the point to appears in the user code. If only points 57, 58, and 59 were to be animated then the coordIndex field would be: coordIndex [56 57 58] The displacements field contains a list of 3D vectors that represent the maximum movement from the default or magicallly enough whatever the current location of that point is. Now, to master this you must understand that a point has its own local coordinate system. Like the default coordinate system of a Joint, a point in default, before animation, is the same as its parent Joint, 0 0 1 0]. This means that let's say that those three points are the tip of a finger and the objective is to move those points directly outward 0.01 unit then the vectors would be: displacements [0 -0.01 0, 0 -0.01 0, 0 -0.01 0] Now the weight field receives a 0 to1 floating point value that linearly scales the output vector. If zero,then no added movement; if 0.5 then one-half,and if 1, then maximum. If 1 is received,then the point will be moved -0.01 unit in the point's Y-axis of the geometry coordinate system. A way to compute the displacements value is if you happened to have a CoordinateInterplator you wanted to get rid of is to find the coordinates of the point at minimum, key input 0, and maximum, key input 1, then find the 3D vector that connects those locations. If you are finding these values by examination, then a major consideration is that you want to set these up understanding the default point coordinate system. So, finally,why did HAnim call it a Displacer? Well, there were a couple of names offered and the HAnim folks just had to pick something different from anyone was actually showing. The idea of a Displacer is very clear, you are telling it to displace a point from its current location in some direction relative to its default coordinate system. In summary, seems to me the idea of terms I have heard like deformer, morpher, blended shapes, and others all can be represented by the functionality of HAnim Displacer. I hope that is good news. Thanks and Fun, Joe _______________________________________________ x3d-public mailing list x3d-public at web3d.org (mailto:x3d-public at web3d.org) http://web3d.org/mailman/listinfo/x3d-public_web3d.org -------------- next part -------------- An HTML attachment was scrubbed... URL: From brutzman at nps.edu Tue Oct 29 03:17:51 2024 From: brutzman at nps.edu (Brutzman, Donald (Don) (CIV)) Date: Tue, 29 Oct 2024 10:17:51 +0000 Subject: [x3d-public] X3D Facial Animation examples and Facial Action Coding System (FACS) Message-ID: At long last we have published and refined an important new set of examples, using 30 excellent original X3D models created by Dr. Myeong Won Lee and her team. * X3D Example Archives: Humanoid Animation, Facial Animation * Https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation * Background. Computer facial animation is an area of current work for HAnim. Example models in this directory use the Facial Action Coding System (FACS) to provide Facial Animation examples. A variety of Action Unit (AU) enumeration values are defined for each facial expression in FACS. The FACS Visual Guidebook showcases the expressive power of this approach. * Initial examples. The original example models show basic patterns for modifying coordinates of a custom mesh. The Suwon VRLAB X3D Converter was used to compute CoordinateInterpolator animation values. The README: Original FACS Models page describes the original contributions and subsequent X3D model refinements. The HAnim Facial Animation Design Patterns diagram illustrates these modifications. * Next steps. The Future Work: FACS for X3D HAnim page describes plans for continuing progress. Continuing refinement of animation models may lead to formally defining additional features and functionality in the Humanoid Animation (HAnim) International Standard. Details regarding model changes follow, along with plans for future work. Special thanks to Joe Williams for insights and assistance working through these issues. It feels like a solid basis for X3D HAnim Facial Animation is emerging. These deserve review by the HAnim working group, perhaps in a special meeting. Thanks in advance for all insights, improvements, and feedback. ======================================= * README: Original FACS Models * https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/README.html Facial Action Coding System (FACS) original X3D models Dr. Myeong Won Lee and team created these original models. She provided the following documentation 8 July 2024. The HAnim FACS animations are generated as follows: 1. A simple motion of facial expression is represented by a single action unit of FACS, such as inner brow raise or wink. More complex facial animation that is made up of a combination of motions, such as a smile made up of both eye and mouth motions, is defined by combining several action units. 2. To represent an action unit in FACS, a minimum of three sets of an LOE1 HAnim facial model (three X3D files) can be used. An LOE1 HAnim facial model is defined by 43 facial regions. Currently, up to five sets of HAnim faces can be used to generate a FACS action unit for a facial expression. 3. The sets of HAnim facial models for an action unit of FACS are animated using X3D keyframe interpolators. This animation can be generated by the HAnim facial converter. Example X3D animation files for FACS action units for facial animation are located at the first shared drive link. The HAnim Facial Motion Converter used for the HAnim FACS animation can be downloaded at the second shared drive link. All the files submitted or notified to Web3D can be used freely without any restriction. It would be good if the facial examples can be uploaded to the Web3D resource pages. In addition, it is ok if all the submitted files that we developed are assigned Web3D software licenses. X3D Model Changes Continuing changes have been applied to content in this originals subdirectory to produced modified models in the parent FacialAnimation directory. List of changes follows. 1. File names adjusted to meet X3D Scene Authoring Hints: Naming Conventions 2. Added DOCTYPE DTD statements for improved XML validation 3. X3D canonicalization (c14n) for consistent whitespace and attribute ordering 4. Model metadata of various kinds, following best practices described in X3D Scene Authoring Hints: meta Statements 5. Added Web3D Consortium open-source license 6. Fixed DEF/USE of ImageTexture files to avoid repetitive, time-consuming reloading of the renamed file from Jin.jpg to JinImageAtlas.jpg 7. Fixed DEF of Coordinate nodes to end in _COORD vice -COORD for best portability and to match naming conventions 8. Fixed DEF/USE of Material files to avoid repetitive reloading and then Appearance files 9. Renamed all files to put "Jin" first, which will help alphabetization when we add more FACS examples in the future 10. Applied correct name to meta title, meta identifier, and WorldInfo title attributes 11. Added meta reference links to original version of each file 12. Combined duplicative clocks and ScalarInterpolator adapters, omit unnecessary Adapter ROUTEs 13. Added directory package descriptions 14. Under evaluation: changing animation loop period from cycleInteval="4" to cycleInteval="0.99" in order to make model-animation visualizations more obvious. 15. TODO adjust select models to restore prior more-complex ScalarInterpolator clock reversals 16. TODO rescale units to meters Many model refinements have been applied. For example, see the subversion diff log at revision 36730. These changes all preserve and enhance the orginal features of this model set. ======================================= * Future Work: Facial Action Coding System (FACS) for X3D HAnim models * https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/FutureWork.html Future Work: Facial Action Coding System (FACS) for X3D HAnim models These plans are based on work adapting models by Dr. Myeong Won Lee, as described in the README: Original FACS Models. Lessons Learned, So Far 1. Every head will likely have different geometry, textures, colors, etc. There is no need for every head to be the same. 2. A single head model file needs to align with HAnim joints and segments, if it is going to be interoperable with other HAnim skeleton/skin models. 3. Each head model will connect to the skeleton as shown in Part 1: Humanoid animation (HAnim) architecture, Section 4 Concepts, 4.9.6.3 LOA-3 hierarchy humanoid_root : sacrum [...] vc7 : c7 | vc6 : c6 | vc5 : c5 | vc4 : c4 | vc3 : c3 | vc2 : c2 | vc1 : c1 | skullbase : skull | l_eyelid_joint : l_eyelid | r_eyelid_joint : r_eyelid | l_eyeball_joint : l_eyeball | r_eyeball_joint : r_eyeball | l_eyebrow_joint : l_eyebrow | r_eyebrow_joint : r_eyebrow | temporomandibular : jaw 4. Typically a new head will connect at HAnimJoint skullbase and HAnimSegment skull, possibly including neck joints as well. 5. Typically an interoperable HAnimHumanoid head will include HAnimJoint and HAnimSegment definitions for eyelid, eyeball, eyebrow, and jaw. 6. The HAnim specification includes guidance on connecting partial body models together in 4.8.6 Partial HAnim figures. 7. No HAnimSite feature points are required in the HAnim specification. 8. We can add HAnimSite feature points to the above HAnimSegment notes, without interfering with any of the native HAnim motion animations. However adding HAnimSite locations to the other facial geometry many need further attention. Adding a useful set of HAnimSite feature points for facial animation might be very useful. Next Steps 1. We want head models that include the ability to use an FACS Action Unit (AU) enumeration that shows a new expression. 2. We currently have single expressions demonstrated in separate model files. Showing one expression at a time is the initial goal for facial expression animations. 3. Integrating the animations together efficiently, within a single X3D model file, is the path towards having interoperably animatable heads that can move eyes/jaw and also show expressions. 4. We first want single-AU responses working, and then multiple-AU responses working, in order to achieve the full range of FACS expressions that are possible. 5. For full animation compatibility, head models need to include the standard HAnim joints and segments for eyelids, eyeballs, eyebrows, and jaw. This requirement deserves careful consideration when designing mesh geometry. 6. See the FACS Visual Guidebook for video examples with corresponding descriptions that illustrate the expressions conveyed by each Action Unit (AU), either individually or in combination. Building example models is the path towards showing repeatable capabilities. Conceivably these capabilities might become a new HAnim node for HAnimHumanoid. Successful, repeatable design patterns can then be formalized in the future HAnim Specification. ======================================= Summary: interoperable facial animation behaviors are beginning to look feasible and repeatable. More demonstration work awaits. Have fun with X3D Humanoid Animation (HAnim)! ? all the best, Don -- Don Brutzman Naval Postgraduate School, Code USW/Br brutzman at nps.edu Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149 X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman -------------- next part -------------- An HTML attachment was scrubbed... URL: From joedwil at earthlink.net Tue Oct 29 09:17:42 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Tue, 29 Oct 2024 16:17:42 +0000 Subject: [x3d-public] X3D Facial Animation examples and Facial Action Coding System (FACS) Message-ID: <1f1630cd-a26d-1f02-e60f-b07192a4f332@earthlink.net> Thanks Don, I'm still following some of the links in the links.. Joe -----Original Message----- From: Brutzman, Donald (Don) (CIV) Sent: Oct 29, 2024 3:17 AM To: Myeong Won Lee , puk at igraphics.com , Joseph D Williams , William Glascoe , Carol McDonald , Katy Schildmeyer KS APPAREL DESIGN , John Carlson , Anita Havele , Nicholas Polys Cc: hanim at web3d.org , X3D Public Mailing List (x3d-public at web3d.org) Subject: X3D Facial Animation examples and Facial Action Coding System (FACS) At long last we have published and refined an important new set of examples, using 30 excellent original X3D models created by Dr. Myeong Won Lee and her team. * X3D Example Archives: Humanoid Animation, Facial Animation * Https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation * Background. Computer facial animation (https://en.wikipedia.org/wiki/Computer_facial_animation) is an area of current work for HAnim. Example models in this directory use the Facial Action Coding System (FACS) (https://en.wikipedia.org/wiki/Facial_Action_Coding_System) to provide Facial Animation examples. A variety of Action Unit (AU) (https://web.cs.wpi.edu/~matt/courses/cs563/talks/face_anim/ekman.html) enumeration values are defined for each facial expression in FACS. The FACS Visual Guidebook (https://imotions.com/blog/learning/research-fundamentals/facial-action-coding-system) showcases the expressive power of this approach. * Initial examples. The original example models (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals) show basic patterns for modifying coordinates of a custom mesh. The Suwon VRLAB X3D Converter (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/SuwonHAnimFacialMotionConverter.mp4) was used to compute CoordinateInterpolator animation values. The README: Original FACS Models (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/README.html) page describes the original contributions and subsequent X3D model refinements. The HAnim Facial Animation Design Patterns (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/HAnimFacialAnimationDesignPatterns.png) diagram illustrates these modifications. * Next steps. The Future Work: FACS for X3D HAnim (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/FutureWork.html) page describes plans for continuing progress. Continuing refinement of animation models may lead to formally defining additional features and functionality in the Humanoid Animation (HAnim) International Standard (https://www.web3d.org/documents/specifications/19774/V2.0/index.html). Details regarding model changes follow, along with plans for future work. Special thanks to Joe Williams for insights and assistance working through these issues. It feels like a solid basis for X3D HAnim Facial Animation is emerging. These deserve review by the HAnim working group, perhaps in a special meeting. Thanks in advance for all insights, improvements, and feedback. ======================================= * README: Original FACS Models * https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/README.html Facial Action Coding System (FACS) original X3D models Dr. Myeong Won Lee and team created these original models. She provided the following documentation 8 July 2024. The HAnim FACS animations are generated as follows: * A simple motion of facial expression is represented by a single action unit of FACS, such as inner brow raise or wink. More complex facial animation that is made up of a combination of motions, such as a smile made up of both eye and mouth motions, is defined by combining several action units. * To represent an action unit in FACS, a minimum of three sets of an LOE1 HAnim facial model (three X3D files) can be used. An LOE1 HAnim facial model is defined by 43 facial regions. Currently, up to five sets of HAnim faces can be used to generate a FACS action unit for a facial expression. * The sets of HAnim facial models for an action unit of FACS are animated using X3D keyframe interpolators. This animation can be generated by the HAnim facial converter. Example X3D animation files for FACS action units for facial animation are located at the first shared drive (https://drive.google.com/drive/folders/1Ja95KSOmoY54iqDdO7fZ3KR2Jo80WbFT?usp=sharing) link. The HAnim Facial Motion Converter used for the HAnim FACS animation can be downloaded at the second shared drive (https://drive.google.com/drive/folders/1v5CPn_EFig9jxLpfjAW34WKDQU6KdmCk?usp=drive_link) link. All the files submitted or notified to Web3D can be used freely without any restriction. It would be good if the facial examples can be uploaded to the Web3D resource pages. In addition, it is ok if all the submitted files that we developed are assigned Web3D software licenses. X3D Model Changes Continuing changes have been applied to content in this originals (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/) subdirectory to produced modified models in the parent FacialAnimation (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/) directory. List of changes follows. * File names adjusted to meet X3D Scene Authoring Hints: Naming Conventions (https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#NamingConventions) * Added DOCTYPE DTD statements for improved XML validation * X3D canonicalization (c14n) for consistent whitespace and attribute ordering * Model metadata of various kinds, following best practices described in X3D Scene Authoring Hints: meta Statements (https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#metaStatements) * Added Web3D Consortium open-source license (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/license.html) * Fixed DEF/USE of ImageTexture files to avoid repetitive, time-consuming reloading of the renamed file from Jin.jpg (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/Jin.jpg) to JinImageAtlas.jpg (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/JinImageAtlas.jpg) * Fixed DEF of Coordinate nodes to end in _COORD vice -COORD for best portability and to match naming conventions * Fixed DEF/USE of Material files to avoid repetitive reloading and then Appearance files * Renamed all files to put "Jin" first, which will help alphabetization when we add more FACS examples in the future * Applied correct name to meta title, meta identifier, and WorldInfo title attributes * Added meta reference links to original version of each file * Combined duplicative clocks and ScalarInterpolator adapters, omit unnecessary Adapter ROUTEs * Added directory package descriptions * Under evaluation: changing animation loop period from cycleInteval="4" to cycleInteval="0.99" in order to make model-animation visualizations more obvious. * TODO adjust select models to restore prior more-complex ScalarInterpolator clock reversals * TODO rescale units to meters Many model refinements have been applied. For example, see the subversion diff log at revision 36730 (https://sourceforge.net/p/x3d/code/36730). These changes all preserve and enhance the orginal features of this model set. ======================================= * Future Work: Facial Action Coding System (FACS) for X3D HAnim models * https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/FutureWork.html Future Work: Facial Action Coding System (FACS) for X3D HAnim models These plans are based on work adapting models by Dr. Myeong Won Lee, as described in the README: Original FACS Models (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/README.html). Lessons Learned, So Far * Every head will likely have different geometry, textures, colors, etc. There is no need for every head to be the same. * A single head model file needs to align with HAnim joints and segments, if it is going to be interoperable with other HAnim skeleton/skin models. * Each head model will connect to the skeleton as shown in Part 1: Humanoid animation (HAnim) architecture, Section 4 Concepts, 4.9.6.3 LOA-3 hierarchy (https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#Hierarchy3) humanoid_root : sacrum [...] vc7 : c7 | vc6 : c6 | vc5 : c5 | vc4 : c4 | vc3 : c3 | vc2 : c2 | vc1 : c1 | skullbase : skull | l_eyelid_joint : l_eyelid | r_eyelid_joint : r_eyelid | l_eyeball_joint : l_eyeball | r_eyeball_joint : r_eyeball | l_eyebrow_joint : l_eyebrow | r_eyebrow_joint : r_eyebrow | temporomandibular : jaw * Typically a new head will connect at HAnimJoint skullbase and HAnimSegment skull, possibly including neck joints as well. * Typically an interoperable HAnimHumanoid head will include HAnimJoint and HAnimSegment definitions for eyelid, eyeball, eyebrow, and jaw. * The HAnim specification includes guidance on connecting partial body models together in 4.8.6 Partial HAnim figures (https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#PartialHAnimFigures). * No HAnimSite feature points are required in the HAnim specification. * We can add HAnimSite feature points to the above HAnimSegment notes, without interfering with any of the native HAnim motion animations. However adding HAnimSite locations to the other facial geometry many need further attention. Adding a useful set of HAnimSite feature points for facial animation might be very useful. Next Steps * We want head models that include the ability to use an FACS Action Unit (AU) enumeration that shows a new expression. * We currently have single expressions demonstrated in separate model files. Showing one expression at a time is the initial goal for facial expression animations. * Integrating the animations together efficiently, within a single X3D model file, is the path towards having interoperably animatable heads that can move eyes/jaw and also show expressions. * We first want single-AU responses working, and then multiple-AU responses working, in order to achieve the full range of FACS expressions that are possible. * For full animation compatibility, head models need to include the standard HAnim joints and segments for eyelids, eyeballs, eyebrows, and jaw. This requirement deserves careful consideration when designing mesh geometry. * See the FACS Visual Guidebook (https://imotions.com/blog/learning/research-fundamentals/facial-action-coding-system/) for video examples with corresponding descriptions that illustrate the expressions conveyed by each Action Unit (AU), either individually or in combination. Building example models is the path towards showing repeatable capabilities. Conceivably these capabilities might become a new HAnim node for HAnimHumanoid. Successful, repeatable design patterns can then be formalized in the future HAnim Specification. ======================================= Summary: interoperable facial animation behaviors are beginning to look feasible and repeatable. More demonstration work awaits. Have fun with X3D Humanoid Animation (HAnim)! ? all the best, Don -- Don Brutzman Naval Postgraduate School, Code USW/Br brutzman at nps.edu Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149 X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Wed Oct 30 04:41:51 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 30 Oct 2024 06:41:51 -0500 Subject: [x3d-public] X3D Facial Animation examples and Facial Action Coding System (FACS) In-Reply-To: References: Message-ID: Thanks for the new examples, Don and Joe, they make replacing CoordinateInterpolators with HAnimDisplacers look great! It was very frustrating to have examples where the animation didn?t seem to move and the cycleInterval was too long. Here?s Yehudi (Menu) Jin as a single file (provide image from the archive, please) Note that I?m still using a Switch on multiple humanoids, but no Inlines. https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/YehudiMenuJin.x3d Joe will probably frown on the use of Scripts. I?ll get to TouchSensor touchTime firing a TimeSensor startTime and stopping other TimeSensors eventually. It?s just great to see lots of animation. This will help with taking out the Switch. Discussions about how to merge humanoids, welcome, like how do I manage to turn on and off multiple displacers inside the same segment. I currently have TimeSensor for a Facial Action sending an event to a ScalarInterpolator which changes weights in many HAnimDisplacers. Perhaps the key is to combine a segment's displacers into one humanoid. If that?s all I have to do, great. I did try, that, with the geometry found in the 0th file (JinBlink I think). It's a mess but maybe someone can repair it. I think I need to disable all TimeSensors at the start. Note that there are segments in my code for teeth ears, tongue, glabella, vermillion (?), etc. I guess these are really sites? Joe? I was also able to convert the Text MFString Menu to several Text nodes, and it appears to be portable. It would be nice to get a HUD in there too, eventually. Maybe it works in BS Contact now? X_ITE, Sunrize and FreeWRL seem to work. John On Tue, Oct 29, 2024 at 5:17?AM Brutzman, Donald (Don) (CIV) < brutzman at nps.edu> wrote: > At long last we have published and refined an important new set of > examples, using 30 excellent original X3D models created by Dr. Myeong Won > Lee and her team. > > - X3D Example Archives: Humanoid Animation, Facial Animation > - > Https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation > > - *Background.* Computer facial animation > is an area > of current work for HAnim. Example models in this directory use the Facial > Action Coding System (FACS) > to provide > Facial Animation examples. A variety of Action Unit (AU) > enumeration > values are defined for each facial expression in FACS. The FACS Visual > Guidebook > showcases > the expressive power of this approach. > - *Initial examples.* The original example models > show > basic patterns for modifying coordinates of a custom mesh. The Suwon > VRLAB X3D Converter > was > used to compute CoordinateInterpolator animation values. > The README: Original FACS Models > page > describes the original contributions and subsequent X3D model refinements. > The HAnim Facial Animation Design Patterns > diagram > illustrates these modifications. > - *Next steps.* The Future Work: FACS for X3D HAnim > page > describes plans for continuing progress. Continuing refinement of animation > models may lead to formally defining additional features and functionality > in the Humanoid Animation (HAnim) International Standard > . > > Details regarding model changes follow, along with plans for future work. > > Special thanks to Joe Williams for insights and assistance working through > these issues. It feels like a solid basis for X3D HAnim Facial Animation > is emerging. > > These deserve review by the HAnim working group, perhaps in a special > meeting. Thanks in advance for all insights, improvements, and feedback. > > ======================================= > > - *README: Original FACS Models* > - > https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/README.html > > *Facial Action Coding System (FACS) original X3D models* > Dr. Myeong Won Lee and team created these original models. She provided > the following documentation 8 July 2024. > > The HAnim FACS animations are generated as follows: > > 1. A simple motion of facial expression is represented by a single > action unit of FACS, such as inner brow raise or wink. More complex facial > animation that is made up of a combination of motions, such as a smile made > up of both eye and mouth motions, is defined by combining several action > units. > 2. To represent an action unit in FACS, a minimum of three sets of an > LOE1 HAnim facial model (three X3D files) can be used. An LOE1 HAnim facial > model is defined by 43 facial regions. Currently, up to five sets of HAnim > faces can be used to generate a FACS action unit for a facial expression. > 3. The sets of HAnim facial models for an action unit of FACS are > animated using X3D keyframe interpolators. This animation can be generated > by the HAnim facial converter. > > Example X3D animation files for FACS action units for facial animation are > located at the first shared drive > > link. > The HAnim Facial Motion Converter used for the HAnim FACS animation can be > downloaded at the second shared drive > > link. > All the files submitted or notified to Web3D can be used freely without > any restriction. It would be good if the facial examples can be uploaded to > the Web3D resource pages. In addition, it is ok if all the submitted files > that we developed are assigned Web3D software licenses. > > *X3D Model Changes* > Continuing changes have been applied to content in this originals > subdirectory > to produced modified models in the parent FacialAnimation > directory. > List of changes follows. > > 1. File names adjusted to meet X3D Scene Authoring Hints: Naming > Conventions > > 2. Added DOCTYPE DTD statements for improved XML validation > 3. X3D canonicalization (c14n) for consistent whitespace and attribute > ordering > 4. Model metadata of various kinds, following best practices described > in X3D Scene Authoring Hints: meta Statements > > 5. Added Web3D Consortium open-source license > > 6. Fixed DEF/USE of ImageTexture files to avoid repetitive, > time-consuming reloading of the renamed file from Jin.jpg > to > JinImageAtlas.jpg > > 7. Fixed DEF of Coordinate nodes to end in _COORD vice -COORD for best > portability and to match naming conventions > 8. Fixed DEF/USE of Material files to avoid repetitive reloading and > then Appearance files > 9. Renamed all files to put "Jin" first, which will help > alphabetization when we add more FACS examples in the future > 10. Applied correct name to meta title, meta identifier, and WorldInfo > title attributes > 11. Added meta reference links to original version of each file > 12. Combined duplicative clocks and ScalarInterpolator adapters, omit > unnecessary Adapter ROUTEs > 13. Added directory package descriptions > 14. Under evaluation: changing animation loop period from > cycleInteval="4" to cycleInteval="0.99" in order to make model-animation > visualizations more obvious. > 15. TODO adjust select models to restore prior more-complex > ScalarInterpolator clock reversals > 16. TODO rescale units to meters > > Many model refinements have been applied. For example, see the subversion > diff log at revision 36730 . > These changes all preserve and enhance the orginal features of this model > set. > ======================================= > > - *Future Work: Facial Action Coding System (FACS) for X3D HAnim > models* > - > https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/FutureWork.html > > *Future Work: Facial Action Coding System (FACS) for X3D HAnim models* > These plans are based on work adapting models by Dr. Myeong Won Lee, as > described in the README: Original FACS Models > > . > *Lessons Learned, So Far* > > 1. Every head will likely have different geometry, textures, colors, > etc. There is no need for every head to be the same. > 2. A single head model file needs to align with HAnim joints and > segments, if it is going to be interoperable with other HAnim skeleton/skin > models. > 3. Each head model will connect to the skeleton as shown in > > Part 1: Humanoid animation (HAnim) architecture, Section 4 Concepts, 4.9.6.3 LOA-3 hierarchy > humanoid_root : sacrum > [...] > vc7 : c7 > | vc6 : c6 > | vc5 : c5 > | vc4 : c4 > | vc3 : c3 > | vc2 : c2 > | vc1 : c1 > | *skullbase : skull* > | l_eyelid_joint : l_eyelid > | r_eyelid_joint : r_eyelid > | l_eyeball_joint : l_eyeball > | r_eyeball_joint : r_eyeball > | l_eyebrow_joint : l_eyebrow > | r_eyebrow_joint : r_eyebrow > | temporomandibular : jaw > > 4. Typically a new head will connect at *HAnimJoint skullbase* and *HAnimSegment > skull*, possibly including neck joints as well. > 5. Typically an interoperable HAnimHumanoid head will include > HAnimJoint and HAnimSegment definitions for eyelid, eyeball, eyebrow, and > jaw. > 6. The HAnim specification includes guidance on connecting partial > body models together in 4.8.6 Partial HAnim figures > > . > 7. No HAnimSite feature points are required in the HAnim specification. > 8. We can add HAnimSite feature points to the above HAnimSegment > notes, without interfering with any of the native HAnim motion animations. > However adding HAnimSite locations to the other facial geometry many need > further attention. Adding a useful set of HAnimSite feature points for > facial animation might be very useful. > > *Next Steps* > > 1. We want head models that include the ability to use an FACS Action > Unit (AU) enumeration that shows a new expression. > 2. We currently have single expressions demonstrated in separate model > files. Showing one expression at a time is the initial goal for facial > expression animations. > 3. Integrating the animations together efficiently, within a single > X3D model file, is the path towards having interoperably animatable heads > that can move eyes/jaw and also show expressions. > 4. We first want single-AU responses working, and then multiple-AU > responses working, in order to achieve the full range of FACS expressions > that are possible. > 5. For full animation compatibility, head models need to include the > standard HAnim joints and segments for eyelids, eyeballs, eyebrows, and > jaw. This requirement deserves careful consideration when designing mesh > geometry. > 6. See the FACS Visual Guidebook > for > video examples with corresponding descriptions that illustrate the > expressions conveyed by each Action Unit (AU), either individually or in > combination. > > Building example models is the path towards showing repeatable > capabilities. Conceivably these capabilities might become a new HAnim node > for HAnimHumanoid. Successful, repeatable design patterns can then be > formalized in the future HAnim Specification. > ======================================= > > Summary: interoperable facial animation behaviors are beginning to look > feasible and repeatable. More demonstration work awaits. > > Have fun with X3D Humanoid Animation (HAnim)! ? > > all the best, Don > > -- > > Don Brutzman Naval Postgraduate School, Code USW/Br > brutzman at nps.edu > > Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA > +1.831.656.2149 > > X3D graphics, virtual worlds, navy robotics > https://faculty.nps.edu/brutzman > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From joedwil at earthlink.net Wed Oct 30 17:12:39 2024 From: joedwil at earthlink.net (Joe D Williams) Date: Thu, 31 Oct 2024 00:12:39 +0000 Subject: [x3d-public] X3D Facial Animation examples and Facial Action Coding System (FACS) Message-ID: HI John, Use of uninitialized local var node in function touchPoint() in Script MenuScript () undefined Couldn't enable JinNoseWrinkler_Clock Selected 23 JinNoseWrinkler Hit 18.9667 -33.0274 -0.1 23 Node Player has no eventOut currentScene in function touchPoint() in Script MenuScript () script error: Can't get object for method getNamedNode in function touchPoint() in Script MenuScript () Use of uninitialized local var node in function touchPoint() in Script MenuScript () Use of uninitialized local var node in function touchPoint() in Script MenuScript () undefined Couldn't enable JinNoseWrinkler_Clock Selected 23 JinNoseWrinkler Above is what BS Contact said, Freewrl not run but list of messages with isOnver, castle no like script. Thanks, Joe -----Original Message----- From: John Carlson Sent: Oct 30, 2024 4:50 AM To: Brutzman, Donald (Don) (CIV) Cc: Myeong Won Lee , puk at igraphics.com , Joseph D Williams , William Glascoe , Carol McDonald , Katy Schildmeyer KS APPAREL DESIGN , Anita Havele , Nicholas Polys , hanim at web3d.org , X3D Public Mailing List (x3d-public at web3d.org) Subject: Re: X3D Facial Animation examples and Facial Action Coding System (FACS) Thanks for the new examples, Don and Joe, they make replacing CoordinateInterpolators with HAnimDisplacers look great! It was very frustrating to have examples where the animation didn’t seem to move and the cycleInterval was too long. Here’s Yehudi (Menu) Jin as a single file (provide image from the archive, please) Note that I’m still using a Switch on multiple humanoids, but no Inlines. https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/YehudiMenuJin.x3d Joe will probably frown on the use of Scripts. I’ll get to TouchSensor touchTime firing a TimeSensor startTime and stopping other TimeSensors eventually. It’s just great to see lots of animation. This will help with taking out the Switch. Discussions about how to merge humanoids, welcome, like how do I manage to turn on and off multiple displacers inside the same segment. I currently have TimeSensor for a Facial Action sending an event to a ScalarInterpolator which changes weights in many HAnimDisplacers. Perhaps the key is to combine a segment's displacers into one humanoid. If that’s all I have to do, great. I did try, that, with the geometry found in the 0th file (JinBlink I think). It's a mess but maybe someone can repair it. I think I need to disable all TimeSensors at the start. Note that there are segments in my code for teeth ears, tongue, glabella, vermillion (?), etc. I guess these are really sites? Joe? I was also able to convert the Text MFString Menu to several Text nodes, and it appears to be portable. It would be nice to get a HUD in there too, eventually. Maybe it works in BS Contact now? X_ITE, Sunrize and FreeWRL seem to work. John On Tue, Oct 29, 2024 at 5:17?AM Brutzman, Donald (Don) (CIV) wrote: At long last we have published and refined an important new set of examples, using 30 excellent original X3D models created by Dr. Myeong Won Lee and her team. * X3D Example Archives: Humanoid Animation, Facial Animation * Https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation * Background. Computer facial animation (https://en.wikipedia.org/wiki/Computer_facial_animation) is an area of current work for HAnim. Example models in this directory use the Facial Action Coding System (FACS) (https://en.wikipedia.org/wiki/Facial_Action_Coding_System) to provide Facial Animation examples. A variety of Action Unit (AU) (https://web.cs.wpi.edu/~matt/courses/cs563/talks/face_anim/ekman.html) enumeration values are defined for each facial expression in FACS. The FACS Visual Guidebook (https://imotions.com/blog/learning/research-fundamentals/facial-action-coding-system) showcases the expressive power of this approach. * Initial examples. The original example models (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals) show basic patterns for modifying coordinates of a custom mesh. The Suwon VRLAB X3D Converter (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/SuwonHAnimFacialMotionConverter.mp4) was used to compute CoordinateInterpolator animation values. The README: Original FACS Models (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/README.html) page describes the original contributions and subsequent X3D model refinements. The HAnim Facial Animation Design Patterns (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/HAnimFacialAnimationDesignPatterns.png) diagram illustrates these modifications. * Next steps. The Future Work: FACS for X3D HAnim (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/FutureWork.html) page describes plans for continuing progress. Continuing refinement of animation models may lead to formally defining additional features and functionality in the Humanoid Animation (HAnim) International Standard (https://www.web3d.org/documents/specifications/19774/V2.0/index.html). Details regarding model changes follow, along with plans for future work. Special thanks to Joe Williams for insights and assistance working through these issues. It feels like a solid basis for X3D HAnim Facial Animation is emerging. These deserve review by the HAnim working group, perhaps in a special meeting. Thanks in advance for all insights, improvements, and feedback. ======================================= * README: Original FACS Models * https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/README.html Facial Action Coding System (FACS) original X3D models Dr. Myeong Won Lee and team created these original models. She provided the following documentation 8 July 2024. The HAnim FACS animations are generated as follows: * A simple motion of facial expression is represented by a single action unit of FACS, such as inner brow raise or wink. More complex facial animation that is made up of a combination of motions, such as a smile made up of both eye and mouth motions, is defined by combining several action units. * To represent an action unit in FACS, a minimum of three sets of an LOE1 HAnim facial model (three X3D files) can be used. An LOE1 HAnim facial model is defined by 43 facial regions. Currently, up to five sets of HAnim faces can be used to generate a FACS action unit for a facial expression. * The sets of HAnim facial models for an action unit of FACS are animated using X3D keyframe interpolators. This animation can be generated by the HAnim facial converter. Example X3D animation files for FACS action units for facial animation are located at the first shared drive (https://drive.google.com/drive/folders/1Ja95KSOmoY54iqDdO7fZ3KR2Jo80WbFT?usp=sharing) link. The HAnim Facial Motion Converter used for the HAnim FACS animation can be downloaded at the second shared drive (https://drive.google.com/drive/folders/1v5CPn_EFig9jxLpfjAW34WKDQU6KdmCk?usp=drive_link) link. All the files submitted or notified to Web3D can be used freely without any restriction. It would be good if the facial examples can be uploaded to the Web3D resource pages. In addition, it is ok if all the submitted files that we developed are assigned Web3D software licenses. X3D Model Changes Continuing changes have been applied to content in this originals (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/) subdirectory to produced modified models in the parent FacialAnimation (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/) directory. List of changes follows. * File names adjusted to meet X3D Scene Authoring Hints: Naming Conventions (https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#NamingConventions) * Added DOCTYPE DTD statements for improved XML validation * X3D canonicalization (c14n) for consistent whitespace and attribute ordering * Model metadata of various kinds, following best practices described in X3D Scene Authoring Hints: meta Statements (https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#metaStatements) * Added Web3D Consortium open-source license (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/license.html) * Fixed DEF/USE of ImageTexture files to avoid repetitive, time-consuming reloading of the renamed file from Jin.jpg (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/Jin.jpg) to JinImageAtlas.jpg (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/JinImageAtlas.jpg) * Fixed DEF of Coordinate nodes to end in _COORD vice -COORD for best portability and to match naming conventions * Fixed DEF/USE of Material files to avoid repetitive reloading and then Appearance files * Renamed all files to put "Jin" first, which will help alphabetization when we add more FACS examples in the future * Applied correct name to meta title, meta identifier, and WorldInfo title attributes * Added meta reference links to original version of each file * Combined duplicative clocks and ScalarInterpolator adapters, omit unnecessary Adapter ROUTEs * Added directory package descriptions * Under evaluation: changing animation loop period from cycleInteval="4" to cycleInteval="0.99" in order to make model-animation visualizations more obvious. * TODO adjust select models to restore prior more-complex ScalarInterpolator clock reversals * TODO rescale units to meters Many model refinements have been applied. For example, see the subversion diff log at revision 36730 (https://sourceforge.net/p/x3d/code/36730). These changes all preserve and enhance the orginal features of this model set. ======================================= * Future Work: Facial Action Coding System (FACS) for X3D HAnim models * https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/FutureWork.html Future Work: Facial Action Coding System (FACS) for X3D HAnim models These plans are based on work adapting models by Dr. Myeong Won Lee, as described in the README: Original FACS Models (https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/README.html). Lessons Learned, So Far * Every head will likely have different geometry, textures, colors, etc. There is no need for every head to be the same. * A single head model file needs to align with HAnim joints and segments, if it is going to be interoperable with other HAnim skeleton/skin models. * Each head model will connect to the skeleton as shown in Part 1: Humanoid animation (HAnim) architecture, Section 4 Concepts, 4.9.6.3 LOA-3 hierarchy (https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#Hierarchy3) humanoid_root : sacrum [...] vc7 : c7 | vc6 : c6 | vc5 : c5 | vc4 : c4 | vc3 : c3 | vc2 : c2 | vc1 : c1 | skullbase : skull | l_eyelid_joint : l_eyelid | r_eyelid_joint : r_eyelid | l_eyeball_joint : l_eyeball | r_eyeball_joint : r_eyeball | l_eyebrow_joint : l_eyebrow | r_eyebrow_joint : r_eyebrow | temporomandibular : jaw * Typically a new head will connect at HAnimJoint skullbase and HAnimSegment skull, possibly including neck joints as well. * Typically an interoperable HAnimHumanoid head will include HAnimJoint and HAnimSegment definitions for eyelid, eyeball, eyebrow, and jaw. * The HAnim specification includes guidance on connecting partial body models together in 4.8.6 Partial HAnim figures (https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/concepts.html#PartialHAnimFigures). * No HAnimSite feature points are required in the HAnim specification. * We can add HAnimSite feature points to the above HAnimSegment notes, without interfering with any of the native HAnim motion animations. However adding HAnimSite locations to the other facial geometry many need further attention. Adding a useful set of HAnimSite feature points for facial animation might be very useful. Next Steps * We want head models that include the ability to use an FACS Action Unit (AU) enumeration that shows a new expression. * We currently have single expressions demonstrated in separate model files. Showing one expression at a time is the initial goal for facial expression animations. * Integrating the animations together efficiently, within a single X3D model file, is the path towards having interoperably animatable heads that can move eyes/jaw and also show expressions. * We first want single-AU responses working, and then multiple-AU responses working, in order to achieve the full range of FACS expressions that are possible. * For full animation compatibility, head models need to include the standard HAnim joints and segments for eyelids, eyeballs, eyebrows, and jaw. This requirement deserves careful consideration when designing mesh geometry. * See the FACS Visual Guidebook (https://imotions.com/blog/learning/research-fundamentals/facial-action-coding-system/) for video examples with corresponding descriptions that illustrate the expressions conveyed by each Action Unit (AU), either individually or in combination. Building example models is the path towards showing repeatable capabilities. Conceivably these capabilities might become a new HAnim node for HAnimHumanoid. Successful, repeatable design patterns can then be formalized in the future HAnim Specification. ======================================= Summary: interoperable facial animation behaviors are beginning to look feasible and repeatable. More demonstration work awaits. Have fun with X3D Humanoid Animation (HAnim)! ? all the best, Don -- Don Brutzman Naval Postgraduate School, Code USW/Br brutzman at nps.edu (mailto:brutzman at nps.edu) Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149 X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Wed Oct 30 17:35:36 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 30 Oct 2024 19:35:36 -0500 Subject: [x3d-public] X3D Facial Animation examples and Facial Action Coding System (FACS) In-Reply-To: References: Message-ID: FreeWRL: try the DUK JavaScript engine. I?ll look into BS Contact. I?m using fields. I know CGE model viewer doesn?t work. Sunrize/X_ITE may be your best besides FreeWRL. I?ll test the current version of Yehudi in a bit. It looks like you *might* have an old version based in getNamedNode(). There?s 30 Scripts in the new one On Wed, Oct 30, 2024 at 7:14?PM Joe D Williams wrote: > HI John, > > Use of uninitialized local var node in function touchPoint() in Script > MenuScript () > undefined Couldn't enable JinNoseWrinkler_Clock > Selected 23 JinNoseWrinkler > Hit 18.9667 -33.0274 -0.1 23 > Node Player has no eventOut currentScene in function touchPoint() in > Script MenuScript () > script error: Can't get object for method getNamedNode in function > touchPoint() in Script MenuScript () > Use of uninitialized local var node in function touchPoint() in Script > MenuScript () > Use of uninitialized local var node in function touchPoint() in Script > MenuScript () > undefined Couldn't enable JinNoseWrinkler_Clock > Selected 23 JinNoseWrinkler > > > > Above is what BS Contact said, Freewrl not run but list of messages with > isOnver, castle no like script. > > Thanks, > > Joe > > > > -----Original Message----- > From: John Carlson > Sent: Oct 30, 2024 4:50 AM > To: Brutzman, Donald (Don) (CIV) > Cc: Myeong Won Lee , puk at igraphics.com < > puk at igraphics.com>, Joseph D Williams , William > Glascoe , Carol McDonald , Katy > Schildmeyer KS APPAREL DESIGN , Anita Havele < > anita.havele at web3d.org>, Nicholas Polys , hanim at web3d.org < > hanim at web3d.org>, X3D Public Mailing List (x3d-public at web3d.org) < > x3d-public at web3d.org> > Subject: Re: X3D Facial Animation examples and Facial Action Coding System > (FACS) > > > Thanks for the new examples, Don and Joe, they make replacing > CoordinateInterpolators with HAnimDisplacers look great! It was very > frustrating to have examples where the animation didn?t seem to move and > the cycleInterval was too long. > > Here?s Yehudi (Menu) Jin as a single file (provide image from the archive, > please) Note that I?m still using a Switch on multiple humanoids, but no > Inlines. > > > https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/YehudiMenuJin.x3d > > Joe will probably frown on the use of Scripts. I?ll get to TouchSensor > touchTime firing a TimeSensor startTime and stopping other TimeSensors > eventually. It?s just great to see lots of animation. This will help with > taking out the Switch. > Discussions about how to merge humanoids, welcome, like how do I manage to > turn on and off multiple displacers inside the same segment. I currently > have TimeSensor for a Facial Action sending an event to a > ScalarInterpolator which changes weights in many HAnimDisplacers. Perhaps > the key is to combine a segment's displacers into one humanoid. If that?s > all I have to do, great. I did try, that, with the geometry found in the > 0th file (JinBlink I think). It's a mess but maybe someone can repair it. > I think I need to disable all TimeSensors at the start. > > Note that there are segments in my code for teeth ears, tongue, glabella, > vermillion (?), etc. I guess these are really sites? Joe? > > I was also able to convert the Text MFString Menu to several Text nodes, > and it appears to be portable. It would be nice to get a HUD in there too, > eventually. > > Maybe it works in BS Contact now? X_ITE, Sunrize and FreeWRL seem to work. > > John > > On Tue, Oct 29, 2024 at 5:17?AM Brutzman, Donald (Don) (CIV) < > brutzman at nps.edu> wrote: > >> At long last we have published and refined an important new set of >> examples, using 30 excellent original X3D models created by Dr. Myeong Won >> Lee and her team. >> >> - X3D Example Archives: Humanoid Animation, Facial Animation >> - >> Https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation >> >> - *Background.* Computer facial animation >> is an area >> of current work for HAnim. Example models in this directory use the Facial >> Action Coding System (FACS) >> to >> provide Facial Animation examples. A variety of Action Unit (AU) >> enumeration >> values are defined for each facial expression in FACS. The FACS >> Visual Guidebook >> showcases >> the expressive power of this approach. >> - *Initial examples.* The original example models >> show >> basic patterns for modifying coordinates of a custom mesh. The Suwon >> VRLAB X3D Converter >> was >> used to compute CoordinateInterpolator animation values. >> The README: Original FACS Models >> page >> describes the original contributions and subsequent X3D model refinements. >> The HAnim Facial Animation Design Patterns >> diagram >> illustrates these modifications. >> - *Next steps.* The Future Work: FACS for X3D HAnim >> page >> describes plans for continuing progress. Continuing refinement of animation >> models may lead to formally defining additional features and functionality >> in the Humanoid Animation (HAnim) International Standard >> >> . >> >> Details regarding model changes follow, along with plans for future work. >> >> Special thanks to Joe Williams for insights and assistance working >> through these issues. It feels like a solid basis for X3D HAnim Facial >> Animation is emerging. >> >> These deserve review by the HAnim working group, perhaps in a special >> meeting. Thanks in advance for all insights, improvements, and feedback. >> >> ======================================= >> >> - *README: Original FACS Models* >> - >> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/README.html >> >> *Facial Action Coding System (FACS) original X3D models* >> Dr. Myeong Won Lee and team created these original models. She provided >> the following documentation 8 July 2024. >> >> The HAnim FACS animations are generated as follows: >> >> 1. A simple motion of facial expression is represented by a single >> action unit of FACS, such as inner brow raise or wink. More complex facial >> animation that is made up of a combination of motions, such as a smile made >> up of both eye and mouth motions, is defined by combining several action >> units. >> 2. To represent an action unit in FACS, a minimum of three sets of an >> LOE1 HAnim facial model (three X3D files) can be used. An LOE1 HAnim facial >> model is defined by 43 facial regions. Currently, up to five sets of HAnim >> faces can be used to generate a FACS action unit for a facial expression. >> 3. The sets of HAnim facial models for an action unit of FACS are >> animated using X3D keyframe interpolators. This animation can be generated >> by the HAnim facial converter. >> >> Example X3D animation files for FACS action units for facial animation >> are located at the first shared drive >> >> link. >> The HAnim Facial Motion Converter used for the HAnim FACS animation can >> be downloaded at the second shared drive >> >> link. >> All the files submitted or notified to Web3D can be used freely without >> any restriction. It would be good if the facial examples can be uploaded to >> the Web3D resource pages. In addition, it is ok if all the submitted files >> that we developed are assigned Web3D software licenses. >> >> *X3D Model Changes* >> Continuing changes have been applied to content in this originals >> subdirectory >> to produced modified models in the parent FacialAnimation >> directory. >> List of changes follows. >> >> 1. File names adjusted to meet X3D Scene Authoring Hints: Naming >> Conventions >> >> 2. Added DOCTYPE DTD statements for improved XML validation >> 3. X3D canonicalization (c14n) for consistent whitespace and >> attribute ordering >> 4. Model metadata of various kinds, following best practices >> described in X3D Scene Authoring Hints: meta Statements >> >> 5. Added Web3D Consortium open-source license >> >> 6. Fixed DEF/USE of ImageTexture files to avoid repetitive, >> time-consuming reloading of the renamed file from Jin.jpg >> to >> JinImageAtlas.jpg >> >> 7. Fixed DEF of Coordinate nodes to end in _COORD vice -COORD for >> best portability and to match naming conventions >> 8. Fixed DEF/USE of Material files to avoid repetitive reloading and >> then Appearance files >> 9. Renamed all files to put "Jin" first, which will help >> alphabetization when we add more FACS examples in the future >> 10. Applied correct name to meta title, meta identifier, and >> WorldInfo title attributes >> 11. Added meta reference links to original version of each file >> 12. Combined duplicative clocks and ScalarInterpolator adapters, omit >> unnecessary Adapter ROUTEs >> 13. Added directory package descriptions >> 14. Under evaluation: changing animation loop period from >> cycleInteval="4" to cycleInteval="0.99" in order to make model-animation >> visualizations more obvious. >> 15. TODO adjust select models to restore prior more-complex >> ScalarInterpolator clock reversals >> 16. TODO rescale units to meters >> >> Many model refinements have been applied. For example, see the subversion >> diff log at revision 36730 . >> These changes all preserve and enhance the orginal features of this model >> set. >> ======================================= >> >> - *Future Work: Facial Action Coding System (FACS) for X3D HAnim >> models* >> - >> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/FutureWork.html >> >> *Future Work: Facial Action Coding System (FACS) for X3D HAnim models* >> These plans are based on work adapting models by Dr. Myeong Won Lee, as >> described in the README: Original FACS Models >> >> . >> *Lessons Learned, So Far* >> >> 1. Every head will likely have different geometry, textures, colors, >> etc. There is no need for every head to be the same. >> 2. A single head model file needs to align with HAnim joints and >> segments, if it is going to be interoperable with other HAnim skeleton/skin >> models. >> 3. Each head model will connect to the skeleton as shown in >> Part 1: Humanoid animation (HAnim) architecture, Section 4 >> Concepts, 4.9.6.3 LOA-3 hierarchy >> >> humanoid_root : sacrum [...] vc7 : c7 | vc6 : >> c6 | vc5 : c5 | vc4 : c4 | vc3 >> : c3 | vc2 : c2 | vc1 : c1 >> | *skullbase : skull* | >> l_eyelid_joint : l_eyelid | r_eyelid_joint : >> r_eyelid | l_eyeball_joint : l_eyeball >> | r_eyeball_joint : r_eyeball | >> l_eyebrow_joint : l_eyebrow | r_eyebrow_joint : >> r_eyebrow | temporomandibular : jaw >> 4. Typically a new head will connect at *HAnimJoint skullbase* and *HAnimSegment >> skull*, possibly including neck joints as well. >> 5. Typically an interoperable HAnimHumanoid head will include >> HAnimJoint and HAnimSegment definitions for eyelid, eyeball, eyebrow, and >> jaw. >> 6. The HAnim specification includes guidance on connecting partial >> body models together in 4.8.6 Partial HAnim figures >> >> . >> 7. No HAnimSite feature points are required in the HAnim >> specification. >> 8. We can add HAnimSite feature points to the above HAnimSegment >> notes, without interfering with any of the native HAnim motion animations. >> However adding HAnimSite locations to the other facial geometry many need >> further attention. Adding a useful set of HAnimSite feature points for >> facial animation might be very useful. >> >> *Next Steps* >> >> 1. We want head models that include the ability to use an FACS Action >> Unit (AU) enumeration that shows a new expression. >> 2. We currently have single expressions demonstrated in separate >> model files. Showing one expression at a time is the initial goal for >> facial expression animations. >> 3. Integrating the animations together efficiently, within a single >> X3D model file, is the path towards having interoperably animatable heads >> that can move eyes/jaw and also show expressions. >> 4. We first want single-AU responses working, and then multiple-AU >> responses working, in order to achieve the full range of FACS expressions >> that are possible. >> 5. For full animation compatibility, head models need to include the >> standard HAnim joints and segments for eyelids, eyeballs, eyebrows, and >> jaw. This requirement deserves careful consideration when designing mesh >> geometry. >> 6. See the FACS Visual Guidebook >> for >> video examples with corresponding descriptions that illustrate the >> expressions conveyed by each Action Unit (AU), either individually or in >> combination. >> >> Building example models is the path towards showing repeatable >> capabilities. Conceivably these capabilities might become a new HAnim node >> for HAnimHumanoid. Successful, repeatable design patterns can then be >> formalized in the future HAnim Specification. >> ======================================= >> >> Summary: interoperable facial animation behaviors are beginning to look >> feasible and repeatable. More demonstration work awaits. >> >> Have fun with X3D Humanoid Animation (HAnim)! ? >> >> >> all the best, Don >> >> -- >> >> Don Brutzman Naval Postgraduate School, Code USW/Br >> brutzman at nps.edu >> >> Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA >> +1.831.656.2149 >> >> X3D graphics, virtual worlds, navy robotics >> https://faculty.nps.edu/brutzman >> >> >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Wed Oct 30 17:58:24 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 30 Oct 2024 19:58:24 -0500 Subject: [x3d-public] X3D Facial Animation examples and Facial Action Coding System (FACS) In-Reply-To: References: Message-ID: I searched the current document for occurrences of isO, but only found ISO. Likely you?ve got an old version. I?ll likely get to retesting tonight, especially with BS Contact. There?s lots of tweaks for different JS engines. John On Wed, Oct 30, 2024 at 7:35?PM John Carlson wrote: > It looks like you *might* have an old version based in getNamedNode(). > There?s 30 Scripts in the new one. > > On Wed, Oct 30, 2024 at 7:14?PM Joe D Williams > wrote: > >> HI John >> >> >> >> Freewrl not run but list of messages with isOnver, castle no like script. >> >> Thanks, >> >> Joe >> >> >> >> -----Original Message----- >> From: John Carlson >> Sent: Oct 30, 2024 4:50 AM >> To: Brutzman, Donald (Don) (CIV) >> Cc: Myeong Won Lee , puk at igraphics.com < >> puk at igraphics.com>, Joseph D Williams , William >> Glascoe , Carol McDonald , Katy >> Schildmeyer KS APPAREL DESIGN , Anita Havele < >> anita.havele at web3d.org>, Nicholas Polys , hanim at web3d.org >> , X3D Public Mailing List (x3d-public at web3d.org) < >> x3d-public at web3d.org> >> Subject: Re: X3D Facial Animation examples and Facial Action Coding >> System (FACS) >> >> >> Thanks for the new examples, Don and Joe, they make replacing >> CoordinateInterpolators with HAnimDisplacers look great! It was very >> frustrating to have examples where the animation didn?t seem to move and >> the cycleInterval was too long. >> >> Here?s Yehudi (Menu) Jin as a single file (provide image from the >> archive, please) Note that I?m still using a Switch on multiple humanoids, >> but no Inlines. >> >> >> https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/YehudiMenuJin.x3d >> >> Joe will probably frown on the use of Scripts. I?ll get to TouchSensor >> touchTime firing a TimeSensor startTime and stopping other TimeSensors >> eventually. It?s just great to see lots of animation. This will help with >> taking out the Switch. >> Discussions about how to merge humanoids, welcome, like how do I manage >> to turn on and off multiple displacers inside the same segment. I >> currently have TimeSensor for a Facial Action sending an event to a >> ScalarInterpolator which changes weights in many HAnimDisplacers. Perhaps >> the key is to combine a segment's displacers into one humanoid. If that?s >> all I have to do, great. I did try, that, with the geometry found in the >> 0th file (JinBlink I think). It's a mess but maybe someone can repair it. >> I think I need to disable all TimeSensors at the start. >> >> Note that there are segments in my code for teeth ears, tongue, glabella, >> vermillion (?), etc. I guess these are really sites? Joe? >> >> I was also able to convert the Text MFString Menu to several Text nodes, >> and it appears to be portable. It would be nice to get a HUD in there too, >> eventually. >> >> Maybe it works in BS Contact now? X_ITE, Sunrize and FreeWRL seem to >> work. >> >> John >> >> On Tue, Oct 29, 2024 at 5:17?AM Brutzman, Donald (Don) (CIV) < >> brutzman at nps.edu> wrote: >> >>> At long last we have published and refined an important new set of >>> examples, using 30 excellent original X3D models created by Dr. Myeong Won >>> Lee and her team. >>> >>> - X3D Example Archives: Humanoid Animation, Facial Animation >>> - >>> Https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation >>> >>> - *Background.* Computer facial animation >>> is an area >>> of current work for HAnim. Example models in this directory use the Facial >>> Action Coding System (FACS) >>> to >>> provide Facial Animation examples. A variety of Action Unit (AU) >>> enumeration >>> values are defined for each facial expression in FACS. The FACS >>> Visual Guidebook >>> showcases >>> the expressive power of this approach. >>> - *Initial examples.* The original example models >>> show >>> basic patterns for modifying coordinates of a custom mesh. The Suwon >>> VRLAB X3D Converter >>> was >>> used to compute CoordinateInterpolator animation values. >>> The README: Original FACS Models >>> page >>> describes the original contributions and subsequent X3D model refinements. >>> The HAnim Facial Animation Design Patterns >>> diagram >>> illustrates these modifications. >>> - *Next steps.* The Future Work: FACS for X3D HAnim >>> page >>> describes plans for continuing progress. Continuing refinement of animation >>> models may lead to formally defining additional features and functionality >>> in the Humanoid Animation (HAnim) International Standard >>> >>> . >>> >>> Details regarding model changes follow, along with plans for future work. >>> >>> Special thanks to Joe Williams for insights and assistance working >>> through these issues. It feels like a solid basis for X3D HAnim Facial >>> Animation is emerging. >>> >>> These deserve review by the HAnim working group, perhaps in a special >>> meeting. Thanks in advance for all insights, improvements, and feedback. >>> >>> ======================================= >>> >>> - *README: Original FACS Models* >>> - >>> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/README.html >>> >>> *Facial Action Coding System (FACS) original X3D models* >>> Dr. Myeong Won Lee and team created these original models. She provided >>> the following documentation 8 July 2024. >>> >>> The HAnim FACS animations are generated as follows: >>> >>> 1. A simple motion of facial expression is represented by a single >>> action unit of FACS, such as inner brow raise or wink. More complex facial >>> animation that is made up of a combination of motions, such as a smile made >>> up of both eye and mouth motions, is defined by combining several action >>> units. >>> 2. To represent an action unit in FACS, a minimum of three sets of >>> an LOE1 HAnim facial model (three X3D files) can be used. An LOE1 HAnim >>> facial model is defined by 43 facial regions. Currently, up to five sets of >>> HAnim faces can be used to generate a FACS action unit for a facial >>> expression. >>> 3. The sets of HAnim facial models for an action unit of FACS are >>> animated using X3D keyframe interpolators. This animation can be generated >>> by the HAnim facial converter. >>> >>> Example X3D animation files for FACS action units for facial animation >>> are located at the first shared drive >>> >>> link. >>> The HAnim Facial Motion Converter used for the HAnim FACS animation can >>> be downloaded at the second shared drive >>> >>> link. >>> All the files submitted or notified to Web3D can be used freely without >>> any restriction. It would be good if the facial examples can be uploaded to >>> the Web3D resource pages. In addition, it is ok if all the submitted files >>> that we developed are assigned Web3D software licenses. >>> >>> *X3D Model Changes* >>> Continuing changes have been applied to content in this originals >>> subdirectory >>> to produced modified models in the parent FacialAnimation >>> directory. >>> List of changes follows. >>> >>> 1. File names adjusted to meet X3D Scene Authoring Hints: Naming >>> Conventions >>> >>> 2. Added DOCTYPE DTD statements for improved XML validation >>> 3. X3D canonicalization (c14n) for consistent whitespace and >>> attribute ordering >>> 4. Model metadata of various kinds, following best practices >>> described in X3D Scene Authoring Hints: meta Statements >>> >>> 5. Added Web3D Consortium open-source license >>> >>> 6. Fixed DEF/USE of ImageTexture files to avoid repetitive, >>> time-consuming reloading of the renamed file from Jin.jpg >>> to >>> JinImageAtlas.jpg >>> >>> 7. Fixed DEF of Coordinate nodes to end in _COORD vice -COORD for >>> best portability and to match naming conventions >>> 8. Fixed DEF/USE of Material files to avoid repetitive reloading and >>> then Appearance files >>> 9. Renamed all files to put "Jin" first, which will help >>> alphabetization when we add more FACS examples in the future >>> 10. Applied correct name to meta title, meta identifier, and >>> WorldInfo title attributes >>> 11. Added meta reference links to original version of each file >>> 12. Combined duplicative clocks and ScalarInterpolator adapters, >>> omit unnecessary Adapter ROUTEs >>> 13. Added directory package descriptions >>> 14. Under evaluation: changing animation loop period from >>> cycleInteval="4" to cycleInteval="0.99" in order to make model-animation >>> visualizations more obvious. >>> 15. TODO adjust select models to restore prior more-complex >>> ScalarInterpolator clock reversals >>> 16. TODO rescale units to meters >>> >>> Many model refinements have been applied. For example, see the >>> subversion diff log at revision 36730 >>> . These changes all preserve >>> and enhance the orginal features of this model set. >>> ======================================= >>> >>> - *Future Work: Facial Action Coding System (FACS) for X3D HAnim >>> models* >>> - >>> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/FutureWork.html >>> >>> *Future Work: Facial Action Coding System (FACS) for X3D HAnim models* >>> These plans are based on work adapting models by Dr. Myeong Won Lee, as >>> described in the README: Original FACS Models >>> >>> . >>> *Lessons Learned, So Far* >>> >>> 1. Every head will likely have different geometry, textures, colors, >>> etc. There is no need for every head to be the same. >>> 2. A single head model file needs to align with HAnim joints and >>> segments, if it is going to be interoperable with other HAnim skeleton/skin >>> models. >>> 3. Each head model will connect to the skeleton as shown in >>> Part 1: Humanoid animation (HAnim) architecture, Section 4 >>> Concepts, 4.9.6.3 LOA-3 hierarchy >>> >>> humanoid_root : sacrum [...] vc7 : c7 | vc6 : >>> c6 | vc5 : c5 | vc4 : c4 | vc3 >>> : c3 | vc2 : c2 | vc1 : c1 >>> | *skullbase : skull* | >>> l_eyelid_joint : l_eyelid | r_eyelid_joint : >>> r_eyelid | l_eyeball_joint : l_eyeball >>> | r_eyeball_joint : r_eyeball | >>> l_eyebrow_joint : l_eyebrow | r_eyebrow_joint : >>> r_eyebrow | temporomandibular : jaw >>> 4. Typically a new head will connect at *HAnimJoint skullbase* and *HAnimSegment >>> skull*, possibly including neck joints as well. >>> 5. Typically an interoperable HAnimHumanoid head will include >>> HAnimJoint and HAnimSegment definitions for eyelid, eyeball, eyebrow, and >>> jaw. >>> 6. The HAnim specification includes guidance on connecting partial >>> body models together in 4.8.6 Partial HAnim figures >>> >>> . >>> 7. No HAnimSite feature points are required in the HAnim >>> specification. >>> 8. We can add HAnimSite feature points to the above HAnimSegment >>> notes, without interfering with any of the native HAnim motion animations. >>> However adding HAnimSite locations to the other facial geometry many need >>> further attention. Adding a useful set of HAnimSite feature points for >>> facial animation might be very useful. >>> >>> *Next Steps* >>> >>> 1. We want head models that include the ability to use an FACS >>> Action Unit (AU) enumeration that shows a new expression. >>> 2. We currently have single expressions demonstrated in separate >>> model files. Showing one expression at a time is the initial goal for >>> facial expression animations. >>> 3. Integrating the animations together efficiently, within a single >>> X3D model file, is the path towards having interoperably animatable heads >>> that can move eyes/jaw and also show expressions. >>> 4. We first want single-AU responses working, and then multiple-AU >>> responses working, in order to achieve the full range of FACS expressions >>> that are possible. >>> 5. For full animation compatibility, head models need to include the >>> standard HAnim joints and segments for eyelids, eyeballs, eyebrows, and >>> jaw. This requirement deserves careful consideration when designing mesh >>> geometry. >>> 6. See the FACS Visual Guidebook >>> for >>> video examples with corresponding descriptions that illustrate the >>> expressions conveyed by each Action Unit (AU), either individually or in >>> combination. >>> >>> Building example models is the path towards showing repeatable >>> capabilities. Conceivably these capabilities might become a new HAnim node >>> for HAnimHumanoid. Successful, repeatable design patterns can then be >>> formalized in the future HAnim Specification. >>> ======================================= >>> >>> Summary: interoperable facial animation behaviors are beginning to look >>> feasible and repeatable. More demonstration work awaits. >>> >>> Have fun with X3D Humanoid Animation (HAnim)! ? >>> >>> >>> all the best, Don >>> >>> -- >>> >>> Don Brutzman Naval Postgraduate School, Code USW/Br >>> brutzman at nps.edu >>> >>> Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA >>> +1.831.656.2149 >>> >>> X3D graphics, virtual worlds, navy robotics >>> https://faculty.nps.edu/brutzman >>> >>> >>> >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Wed Oct 30 19:09:57 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 30 Oct 2024 21:09:57 -0500 Subject: [x3d-public] X3D Facial Animation examples and Facial Action Coding System (FACS) In-Reply-To: References: Message-ID: Joe, I ran all foure menus with FreeWRL without consequence, with and without the DUK JS Engine. Perhaps you could download FreeWRL 6.7? Note that the download might need installation of Microsoft .dll redistributeables. Michalis gives a good summary here: FreeWRL VRML/X3D browser / Tickets / #3 Missing DLLs (msvcp140.dll, likely also vcruntime140.dll) upon installing FreeWRL on fresh Windows 11 installation Probably you won't have an issue on older versions of Windows? IDK! I did note that BS Contact reported identical ROUTE issues in SingleMenuJin.x3d, for quite some time. I need to look into it There are more duplicate lines in the file too, like: 29 < 29 < 29 < 29 < 29 < I'm not too worried about duplicate stuff in a menu. I will try to reduce the number of ROUTEs. John On Wed, Oct 30, 2024 at 7:14?PM Joe D Williams wrote: > HI John, > > Use of uninitialized local var node in function touchPoint() in Script > MenuScript () > undefined Couldn't enable JinNoseWrinkler_Clock > Selected 23 JinNoseWrinkler > Hit 18.9667 -33.0274 -0.1 23 > Node Player has no eventOut currentScene in function touchPoint() in > Script MenuScript () > script error: Can't get object for method getNamedNode in function > touchPoint() in Script MenuScript () > Use of uninitialized local var node in function touchPoint() in Script > MenuScript () > Use of uninitialized local var node in function touchPoint() in Script > MenuScript () > undefined Couldn't enable JinNoseWrinkler_Clock > Selected 23 JinNoseWrinkler > > > > Above is what BS Contact said, Freewrl not run but list of messages with > isOnver, castle no like script. > > Thanks, > > Joe > > > > -----Original Message----- > From: John Carlson > Sent: Oct 30, 2024 4:50 AM > To: Brutzman, Donald (Don) (CIV) > Cc: Myeong Won Lee , puk at igraphics.com < > puk at igraphics.com>, Joseph D Williams , William > Glascoe , Carol McDonald , Katy > Schildmeyer KS APPAREL DESIGN , Anita Havele < > anita.havele at web3d.org>, Nicholas Polys , hanim at web3d.org < > hanim at web3d.org>, X3D Public Mailing List (x3d-public at web3d.org) < > x3d-public at web3d.org> > Subject: Re: X3D Facial Animation examples and Facial Action Coding System > (FACS) > > > Thanks for the new examples, Don and Joe, they make replacing > CoordinateInterpolators with HAnimDisplacers look great! It was very > frustrating to have examples where the animation didn?t seem to move and > the cycleInterval was too long. > > Here?s Yehudi (Menu) Jin as a single file (provide image from the archive, > please) Note that I?m still using a Switch on multiple humanoids, but no > Inlines. > > > https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/YehudiMenuJin.x3d > > Joe will probably frown on the use of Scripts. I?ll get to TouchSensor > touchTime firing a TimeSensor startTime and stopping other TimeSensors > eventually. It?s just great to see lots of animation. This will help with > taking out the Switch. > Discussions about how to merge humanoids, welcome, like how do I manage to > turn on and off multiple displacers inside the same segment. I currently > have TimeSensor for a Facial Action sending an event to a > ScalarInterpolator which changes weights in many HAnimDisplacers. Perhaps > the key is to combine a segment's displacers into one humanoid. If that?s > all I have to do, great. I did try, that, with the geometry found in the > 0th file (JinBlink I think). It's a mess but maybe someone can repair it. > I think I need to disable all TimeSensors at the start. > > Note that there are segments in my code for teeth ears, tongue, glabella, > vermillion (?), etc. I guess these are really sites? Joe? > > I was also able to convert the Text MFString Menu to several Text nodes, > and it appears to be portable. It would be nice to get a HUD in there too, > eventually. > > Maybe it works in BS Contact now? X_ITE, Sunrize and FreeWRL seem to work. > > John > > On Tue, Oct 29, 2024 at 5:17?AM Brutzman, Donald (Don) (CIV) < > brutzman at nps.edu> wrote: > >> At long last we have published and refined an important new set of >> examples, using 30 excellent original X3D models created by Dr. Myeong Won >> Lee and her team. >> >> - X3D Example Archives: Humanoid Animation, Facial Animation >> - >> Https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation >> >> - *Background.* Computer facial animation >> is an area >> of current work for HAnim. Example models in this directory use the Facial >> Action Coding System (FACS) >> to >> provide Facial Animation examples. A variety of Action Unit (AU) >> enumeration >> values are defined for each facial expression in FACS. The FACS >> Visual Guidebook >> showcases >> the expressive power of this approach. >> - *Initial examples.* The original example models >> show >> basic patterns for modifying coordinates of a custom mesh. The Suwon >> VRLAB X3D Converter >> was >> used to compute CoordinateInterpolator animation values. >> The README: Original FACS Models >> page >> describes the original contributions and subsequent X3D model refinements. >> The HAnim Facial Animation Design Patterns >> diagram >> illustrates these modifications. >> - *Next steps.* The Future Work: FACS for X3D HAnim >> page >> describes plans for continuing progress. Continuing refinement of animation >> models may lead to formally defining additional features and functionality >> in the Humanoid Animation (HAnim) International Standard >> >> . >> >> Details regarding model changes follow, along with plans for future work. >> >> Special thanks to Joe Williams for insights and assistance working >> through these issues. It feels like a solid basis for X3D HAnim Facial >> Animation is emerging. >> >> These deserve review by the HAnim working group, perhaps in a special >> meeting. Thanks in advance for all insights, improvements, and feedback. >> >> ======================================= >> >> - *README: Original FACS Models* >> - >> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/README.html >> >> *Facial Action Coding System (FACS) original X3D models* >> Dr. Myeong Won Lee and team created these original models. She provided >> the following documentation 8 July 2024. >> >> The HAnim FACS animations are generated as follows: >> >> 1. A simple motion of facial expression is represented by a single >> action unit of FACS, such as inner brow raise or wink. More complex facial >> animation that is made up of a combination of motions, such as a smile made >> up of both eye and mouth motions, is defined by combining several action >> units. >> 2. To represent an action unit in FACS, a minimum of three sets of an >> LOE1 HAnim facial model (three X3D files) can be used. An LOE1 HAnim facial >> model is defined by 43 facial regions. Currently, up to five sets of HAnim >> faces can be used to generate a FACS action unit for a facial expression. >> 3. The sets of HAnim facial models for an action unit of FACS are >> animated using X3D keyframe interpolators. This animation can be generated >> by the HAnim facial converter. >> >> Example X3D animation files for FACS action units for facial animation >> are located at the first shared drive >> >> link. >> The HAnim Facial Motion Converter used for the HAnim FACS animation can >> be downloaded at the second shared drive >> >> link. >> All the files submitted or notified to Web3D can be used freely without >> any restriction. It would be good if the facial examples can be uploaded to >> the Web3D resource pages. In addition, it is ok if all the submitted files >> that we developed are assigned Web3D software licenses. >> >> *X3D Model Changes* >> Continuing changes have been applied to content in this originals >> subdirectory >> to produced modified models in the parent FacialAnimation >> directory. >> List of changes follows. >> >> 1. File names adjusted to meet X3D Scene Authoring Hints: Naming >> Conventions >> >> 2. Added DOCTYPE DTD statements for improved XML validation >> 3. X3D canonicalization (c14n) for consistent whitespace and >> attribute ordering >> 4. Model metadata of various kinds, following best practices >> described in X3D Scene Authoring Hints: meta Statements >> >> 5. Added Web3D Consortium open-source license >> >> 6. Fixed DEF/USE of ImageTexture files to avoid repetitive, >> time-consuming reloading of the renamed file from Jin.jpg >> to >> JinImageAtlas.jpg >> >> 7. Fixed DEF of Coordinate nodes to end in _COORD vice -COORD for >> best portability and to match naming conventions >> 8. Fixed DEF/USE of Material files to avoid repetitive reloading and >> then Appearance files >> 9. Renamed all files to put "Jin" first, which will help >> alphabetization when we add more FACS examples in the future >> 10. Applied correct name to meta title, meta identifier, and >> WorldInfo title attributes >> 11. Added meta reference links to original version of each file >> 12. Combined duplicative clocks and ScalarInterpolator adapters, omit >> unnecessary Adapter ROUTEs >> 13. Added directory package descriptions >> 14. Under evaluation: changing animation loop period from >> cycleInteval="4" to cycleInteval="0.99" in order to make model-animation >> visualizations more obvious. >> 15. TODO adjust select models to restore prior more-complex >> ScalarInterpolator clock reversals >> 16. TODO rescale units to meters >> >> Many model refinements have been applied. For example, see the subversion >> diff log at revision 36730 . >> These changes all preserve and enhance the orginal features of this model >> set. >> ======================================= >> >> - *Future Work: Facial Action Coding System (FACS) for X3D HAnim >> models* >> - >> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/FutureWork.html >> >> *Future Work: Facial Action Coding System (FACS) for X3D HAnim models* >> These plans are based on work adapting models by Dr. Myeong Won Lee, as >> described in the README: Original FACS Models >> >> . >> *Lessons Learned, So Far* >> >> 1. Every head will likely have different geometry, textures, colors, >> etc. There is no need for every head to be the same. >> 2. A single head model file needs to align with HAnim joints and >> segments, if it is going to be interoperable with other HAnim skeleton/skin >> models. >> 3. Each head model will connect to the skeleton as shown in >> Part 1: Humanoid animation (HAnim) architecture, Section 4 >> Concepts, 4.9.6.3 LOA-3 hierarchy >> >> humanoid_root : sacrum [...] vc7 : c7 | vc6 : >> c6 | vc5 : c5 | vc4 : c4 | vc3 >> : c3 | vc2 : c2 | vc1 : c1 >> | *skullbase : skull* | >> l_eyelid_joint : l_eyelid | r_eyelid_joint : >> r_eyelid | l_eyeball_joint : l_eyeball >> | r_eyeball_joint : r_eyeball | >> l_eyebrow_joint : l_eyebrow | r_eyebrow_joint : >> r_eyebrow | temporomandibular : jaw >> 4. Typically a new head will connect at *HAnimJoint skullbase* and *HAnimSegment >> skull*, possibly including neck joints as well. >> 5. Typically an interoperable HAnimHumanoid head will include >> HAnimJoint and HAnimSegment definitions for eyelid, eyeball, eyebrow, and >> jaw. >> 6. The HAnim specification includes guidance on connecting partial >> body models together in 4.8.6 Partial HAnim figures >> >> . >> 7. No HAnimSite feature points are required in the HAnim >> specification. >> 8. We can add HAnimSite feature points to the above HAnimSegment >> notes, without interfering with any of the native HAnim motion animations. >> However adding HAnimSite locations to the other facial geometry many need >> further attention. Adding a useful set of HAnimSite feature points for >> facial animation might be very useful. >> >> *Next Steps* >> >> 1. We want head models that include the ability to use an FACS Action >> Unit (AU) enumeration that shows a new expression. >> 2. We currently have single expressions demonstrated in separate >> model files. Showing one expression at a time is the initial goal for >> facial expression animations. >> 3. Integrating the animations together efficiently, within a single >> X3D model file, is the path towards having interoperably animatable heads >> that can move eyes/jaw and also show expressions. >> 4. We first want single-AU responses working, and then multiple-AU >> responses working, in order to achieve the full range of FACS expressions >> that are possible. >> 5. For full animation compatibility, head models need to include the >> standard HAnim joints and segments for eyelids, eyeballs, eyebrows, and >> jaw. This requirement deserves careful consideration when designing mesh >> geometry. >> 6. See the FACS Visual Guidebook >> for >> video examples with corresponding descriptions that illustrate the >> expressions conveyed by each Action Unit (AU), either individually or in >> combination. >> >> Building example models is the path towards showing repeatable >> capabilities. Conceivably these capabilities might become a new HAnim node >> for HAnimHumanoid. Successful, repeatable design patterns can then be >> formalized in the future HAnim Specification. >> ======================================= >> >> Summary: interoperable facial animation behaviors are beginning to look >> feasible and repeatable. More demonstration work awaits. >> >> Have fun with X3D Humanoid Animation (HAnim)! ? >> >> >> all the best, Don >> >> -- >> >> Don Brutzman Naval Postgraduate School, Code USW/Br >> brutzman at nps.edu >> >> Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA >> +1.831.656.2149 >> >> X3D graphics, virtual worlds, navy robotics >> https://faculty.nps.edu/brutzman >> >> >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Wed Oct 30 20:12:41 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 30 Oct 2024 22:12:41 -0500 Subject: [x3d-public] X3D Facial Animation examples and Facial Action Coding System (FACS) In-Reply-To: References: Message-ID: I successfully reduced the number of ROUTEs with no apparent change to the SingleMenuJin.x3d appearance and mechanics. The geometry is still iffy. We need to discuss something beyond choosing the geometry in the first file. Maybe the second? Lol. I?m not sure what to do except a Switch on geometry or transform in each segment, and then add back the Scripts. https://github.com/coderextreme/ci2had/blob/main/resources/SingleMenuJin.x3d I can remove the ProximitySensor if you think it will help. BS Contact doesn?t even seem to animate. I has the WorldInfo of the first file in the log. Meanwhile, don?t forget to test: https://github.com/coderextreme/ci2had/blob/main/resources/YehudiMenuJin.x3d Perhaps a next task is to add stopTime events there. So perhaps starting fresh with a common mesh for each Segment (Site?) would be appropriate? Or would initially disabling TimeSensors do the trick? Happy Trick-or-Treating! John On Wed, Oct 30, 2024 at 9:09?PM John Carlson wrote: > Joe, I ran all foure menus with FreeWRL without consequence, with and > without the DUK JS Engine. Perhaps you could download FreeWRL 6.7? Note > that the download might need installation of Microsoft > .dll redistributeables. Michalis gives a good summary here: FreeWRL > VRML/X3D browser / Tickets / #3 Missing DLLs (msvcp140.dll, likely also > vcruntime140.dll) upon installing FreeWRL on fresh Windows 11 installation > Probably you won't have > an issue on older versions of Windows? IDK! > > I did note that BS Contact reported identical ROUTE issues in > SingleMenuJin.x3d, for quite some time. I need to look into it > > There are more duplicate lines in the file too, like: > > 29 < justify='"MIDDLE" "MIDDLE"'/> > 29 < > 29 < > 29 < > 29 < > > I'm not too worried about duplicate stuff in a menu. I will try to reduce > the number of ROUTEs. > > John > > On Wed, Oct 30, 2024 at 7:14?PM Joe D Williams > wrote: > >> HI John, >> >> Use of uninitialized local var node in function touchPoint() in Script >> MenuScript () >> undefined Couldn't enable JinNoseWrinkler_Clock >> Selected 23 JinNoseWrinkler >> Hit 18.9667 -33.0274 -0.1 23 >> Node Player has no eventOut currentScene in function touchPoint() in >> Script MenuScript () >> script error: Can't get object for method getNamedNode in function >> touchPoint() in Script MenuScript () >> Use of uninitialized local var node in function touchPoint() in Script >> MenuScript () >> Use of uninitialized local var node in function touchPoint() in Script >> MenuScript () >> undefined Couldn't enable JinNoseWrinkler_Clock >> Selected 23 JinNoseWrinkler >> >> >> >> Above is what BS Contact said, Freewrl not run but list of messages with >> isOnver, castle no like script. >> >> Thanks, >> >> Joe >> >> >> >> -----Original Message----- >> From: John Carlson >> Sent: Oct 30, 2024 4:50 AM >> To: Brutzman, Donald (Don) (CIV) >> Cc: Myeong Won Lee , puk at igraphics.com < >> puk at igraphics.com>, Joseph D Williams , William >> Glascoe , Carol McDonald , Katy >> Schildmeyer KS APPAREL DESIGN , Anita Havele < >> anita.havele at web3d.org>, Nicholas Polys , hanim at web3d.org >> , X3D Public Mailing List (x3d-public at web3d.org) < >> x3d-public at web3d.org> >> Subject: Re: X3D Facial Animation examples and Facial Action Coding >> System (FACS) >> >> >> Thanks for the new examples, Don and Joe, they make replacing >> CoordinateInterpolators with HAnimDisplacers look great! It was very >> frustrating to have examples where the animation didn?t seem to move and >> the cycleInterval was too long. >> >> Here?s Yehudi (Menu) Jin as a single file (provide image from the >> archive, please) Note that I?m still using a Switch on multiple humanoids, >> but no Inlines. >> >> >> https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/YehudiMenuJin.x3d >> >> Joe will probably frown on the use of Scripts. I?ll get to TouchSensor >> touchTime firing a TimeSensor startTime and stopping other TimeSensors >> eventually. It?s just great to see lots of animation. This will help with >> taking out the Switch. >> Discussions about how to merge humanoids, welcome, like how do I manage >> to turn on and off multiple displacers inside the same segment. I >> currently have TimeSensor for a Facial Action sending an event to a >> ScalarInterpolator which changes weights in many HAnimDisplacers. Perhaps >> the key is to combine a segment's displacers into one humanoid. If that?s >> all I have to do, great. I did try, that, with the geometry found in the >> 0th file (JinBlink I think). It's a mess but maybe someone can repair it. >> I think I need to disable all TimeSensors at the start. >> >> Note that there are segments in my code for teeth ears, tongue, glabella, >> vermillion (?), etc. I guess these are really sites? Joe? >> >> I was also able to convert the Text MFString Menu to several Text nodes, >> and it appears to be portable. It would be nice to get a HUD in there too, >> eventually. >> >> Maybe it works in BS Contact now? X_ITE, Sunrize and FreeWRL seem to >> work. >> >> John >> >> On Tue, Oct 29, 2024 at 5:17?AM Brutzman, Donald (Don) (CIV) < >> brutzman at nps.edu> wrote: >> >>> At long last we have published and refined an important new set of >>> examples, using 30 excellent original X3D models created by Dr. Myeong Won >>> Lee and her team. >>> >>> - X3D Example Archives: Humanoid Animation, Facial Animation >>> - >>> Https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation >>> >>> - *Background.* Computer facial animation >>> is an area >>> of current work for HAnim. Example models in this directory use the Facial >>> Action Coding System (FACS) >>> to >>> provide Facial Animation examples. A variety of Action Unit (AU) >>> enumeration >>> values are defined for each facial expression in FACS. The FACS >>> Visual Guidebook >>> showcases >>> the expressive power of this approach. >>> - *Initial examples.* The original example models >>> show >>> basic patterns for modifying coordinates of a custom mesh. The Suwon >>> VRLAB X3D Converter >>> was >>> used to compute CoordinateInterpolator animation values. >>> The README: Original FACS Models >>> page >>> describes the original contributions and subsequent X3D model refinements. >>> The HAnim Facial Animation Design Patterns >>> diagram >>> illustrates these modifications. >>> - *Next steps.* The Future Work: FACS for X3D HAnim >>> page >>> describes plans for continuing progress. Continuing refinement of animation >>> models may lead to formally defining additional features and functionality >>> in the Humanoid Animation (HAnim) International Standard >>> >>> . >>> >>> Details regarding model changes follow, along with plans for future work. >>> >>> Special thanks to Joe Williams for insights and assistance working >>> through these issues. It feels like a solid basis for X3D HAnim Facial >>> Animation is emerging. >>> >>> These deserve review by the HAnim working group, perhaps in a special >>> meeting. Thanks in advance for all insights, improvements, and feedback. >>> >>> ======================================= >>> >>> - *README: Original FACS Models* >>> - >>> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/originals/README.html >>> >>> *Facial Action Coding System (FACS) original X3D models* >>> Dr. Myeong Won Lee and team created these original models. She provided >>> the following documentation 8 July 2024. >>> >>> The HAnim FACS animations are generated as follows: >>> >>> 1. A simple motion of facial expression is represented by a single >>> action unit of FACS, such as inner brow raise or wink. More complex facial >>> animation that is made up of a combination of motions, such as a smile made >>> up of both eye and mouth motions, is defined by combining several action >>> units. >>> 2. To represent an action unit in FACS, a minimum of three sets of >>> an LOE1 HAnim facial model (three X3D files) can be used. An LOE1 HAnim >>> facial model is defined by 43 facial regions. Currently, up to five sets of >>> HAnim faces can be used to generate a FACS action unit for a facial >>> expression. >>> 3. The sets of HAnim facial models for an action unit of FACS are >>> animated using X3D keyframe interpolators. This animation can be generated >>> by the HAnim facial converter. >>> >>> Example X3D animation files for FACS action units for facial animation >>> are located at the first shared drive >>> >>> link. >>> The HAnim Facial Motion Converter used for the HAnim FACS animation can >>> be downloaded at the second shared drive >>> >>> link. >>> All the files submitted or notified to Web3D can be used freely without >>> any restriction. It would be good if the facial examples can be uploaded to >>> the Web3D resource pages. In addition, it is ok if all the submitted files >>> that we developed are assigned Web3D software licenses. >>> >>> *X3D Model Changes* >>> Continuing changes have been applied to content in this originals >>> subdirectory >>> to produced modified models in the parent FacialAnimation >>> directory. >>> List of changes follows. >>> >>> 1. File names adjusted to meet X3D Scene Authoring Hints: Naming >>> Conventions >>> >>> 2. Added DOCTYPE DTD statements for improved XML validation >>> 3. X3D canonicalization (c14n) for consistent whitespace and >>> attribute ordering >>> 4. Model metadata of various kinds, following best practices >>> described in X3D Scene Authoring Hints: meta Statements >>> >>> 5. Added Web3D Consortium open-source license >>> >>> 6. Fixed DEF/USE of ImageTexture files to avoid repetitive, >>> time-consuming reloading of the renamed file from Jin.jpg >>> to >>> JinImageAtlas.jpg >>> >>> 7. Fixed DEF of Coordinate nodes to end in _COORD vice -COORD for >>> best portability and to match naming conventions >>> 8. Fixed DEF/USE of Material files to avoid repetitive reloading and >>> then Appearance files >>> 9. Renamed all files to put "Jin" first, which will help >>> alphabetization when we add more FACS examples in the future >>> 10. Applied correct name to meta title, meta identifier, and >>> WorldInfo title attributes >>> 11. Added meta reference links to original version of each file >>> 12. Combined duplicative clocks and ScalarInterpolator adapters, >>> omit unnecessary Adapter ROUTEs >>> 13. Added directory package descriptions >>> 14. Under evaluation: changing animation loop period from >>> cycleInteval="4" to cycleInteval="0.99" in order to make model-animation >>> visualizations more obvious. >>> 15. TODO adjust select models to restore prior more-complex >>> ScalarInterpolator clock reversals >>> 16. TODO rescale units to meters >>> >>> Many model refinements have been applied. For example, see the >>> subversion diff log at revision 36730 >>> . These changes all preserve >>> and enhance the orginal features of this model set. >>> ======================================= >>> >>> - *Future Work: Facial Action Coding System (FACS) for X3D HAnim >>> models* >>> - >>> https://www.web3d.org/x3d/content/examples/HumanoidAnimation/FacialAnimation/FutureWork.html >>> >>> *Future Work: Facial Action Coding System (FACS) for X3D HAnim models* >>> These plans are based on work adapting models by Dr. Myeong Won Lee, as >>> described in the README: Original FACS Models >>> >>> . >>> *Lessons Learned, So Far* >>> >>> 1. Every head will likely have different geometry, textures, colors, >>> etc. There is no need for every head to be the same. >>> 2. A single head model file needs to align with HAnim joints and >>> segments, if it is going to be interoperable with other HAnim skeleton/skin >>> models. >>> 3. Each head model will connect to the skeleton as shown in >>> Part 1: Humanoid animation (HAnim) architecture, Section 4 >>> Concepts, 4.9.6.3 LOA-3 hierarchy >>> >>> humanoid_root : sacrum [...] vc7 : c7 | vc6 : >>> c6 | vc5 : c5 | vc4 : c4 | vc3 >>> : c3 | vc2 : c2 | vc1 : c1 >>> | *skullbase : skull* | >>> l_eyelid_joint : l_eyelid | r_eyelid_joint : >>> r_eyelid | l_eyeball_joint : l_eyeball >>> | r_eyeball_joint : r_eyeball | >>> l_eyebrow_joint : l_eyebrow | r_eyebrow_joint : >>> r_eyebrow | temporomandibular : jaw >>> 4. Typically a new head will connect at *HAnimJoint skullbase* and *HAnimSegment >>> skull*, possibly including neck joints as well. >>> 5. Typically an interoperable HAnimHumanoid head will include >>> HAnimJoint and HAnimSegment definitions for eyelid, eyeball, eyebrow, and >>> jaw. >>> 6. The HAnim specification includes guidance on connecting partial >>> body models together in 4.8.6 Partial HAnim figures >>> >>> . >>> 7. No HAnimSite feature points are required in the HAnim >>> specification. >>> 8. We can add HAnimSite feature points to the above HAnimSegment >>> notes, without interfering with any of the native HAnim motion animations. >>> However adding HAnimSite locations to the other facial geometry many need >>> further attention. Adding a useful set of HAnimSite feature points for >>> facial animation might be very useful. >>> >>> *Next Steps* >>> >>> 1. We want head models that include the ability to use an FACS >>> Action Unit (AU) enumeration that shows a new expression. >>> 2. We currently have single expressions demonstrated in separate >>> model files. Showing one expression at a time is the initial goal for >>> facial expression animations. >>> 3. Integrating the animations together efficiently, within a single >>> X3D model file, is the path towards having interoperably animatable heads >>> that can move eyes/jaw and also show expressions. >>> 4. We first want single-AU responses working, and then multiple-AU >>> responses working, in order to achieve the full range of FACS expressions >>> that are possible. >>> 5. For full animation compatibility, head models need to include the >>> standard HAnim joints and segments for eyelids, eyeballs, eyebrows, and >>> jaw. This requirement deserves careful consideration when designing mesh >>> geometry. >>> 6. See the FACS Visual Guidebook >>> for >>> video examples with corresponding descriptions that illustrate the >>> expressions conveyed by each Action Unit (AU), either individually or in >>> combination. >>> >>> Building example models is the path towards showing repeatable >>> capabilities. Conceivably these capabilities might become a new HAnim node >>> for HAnimHumanoid. Successful, repeatable design patterns can then be >>> formalized in the future HAnim Specification. >>> ======================================= >>> >>> Summary: interoperable facial animation behaviors are beginning to look >>> feasible and repeatable. More demonstration work awaits. >>> >>> Have fun with X3D Humanoid Animation (HAnim)! ? >>> >>> >>> all the best, Don >>> >>> -- >>> >>> Don Brutzman Naval Postgraduate School, Code USW/Br >>> brutzman at nps.edu >>> >>> Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA >>> +1.831.656.2149 >>> >>> X3D graphics, virtual worlds, navy robotics >>> https://faculty.nps.edu/brutzman >>> >>> >>> >> >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From yottzumm at gmail.com Wed Oct 30 21:19:04 2024 From: yottzumm at gmail.com (John Carlson) Date: Wed, 30 Oct 2024 23:19:04 -0500 Subject: [x3d-public] X3D Facial Animation examples and Facial Action Coding System (FACS) In-Reply-To: References: Message-ID: Looking at my reports, this might even work well! On Wed, Oct 30, 2024 at 10:12?PM John Carlson wrote: The geometry is still iffy. We need to discuss something beyond choosing the geometry in the first file. Maybe the second? Lol. -------------- next part -------------- An HTML attachment was scrubbed... URL: