Giter VIP home page Giter VIP logo

picogkruntime's Introduction

Welcome to the LEAP 71 GitHub

LEAP71

At LEAP 71 we build complex technical objects using Computational Engineering Models (CEM). These models output parts, structures, and entire functional assemblies of machines, ready for production using advanced digital production technologies, such as industrial 3D Printing.

2023-11-23 LEAP 71 GitHub

We use our technology to build anything from rocket engines to energy efficient heat exchangers and electric motors.

Check out our gallery here.

We are committed to supporting a growing open-source community around Computational Engineering, and are in the process of releasing many of our foundational technologies and computational models to the public.

Resources

PicoGK_200px PicoGK ("peacock") is the open source foundation of all of our work at LEAP 71. Get started with PicoGK here.
Coding Coding for engineers is an ongoing book project about learning how to code on PicoGK, which is released chapter by chapter by Lin Kayser.
jlk Check out our GitHub Discussions, to talk about Computational Engineering, PicoGK, give feedback, ask questions, and see what others are doing,
PicoGK.org Visit PicoGK.org for more resources.

PicoGK

2023-11-23 LEAP 71 GitHub 2

At the core of our work lies PicoGK ("peacock"), a compact and robust geometry kernel. We have released PicoGK under the permissive Free and Open Source (FOSS) Apache 2.0 license.

To get started with PicoGK, check out the documentation.

Computational Engineering benefits greatly from the free exchange of knowledge and algorithms. While much of LEAP 71's work is proprietary, we are constantly publishing foundational modules and examples as open-source.

At this time, the following repositories are available:

Base libraries

Use these libraries as submodules in your own Computational Engineering projects.

Repository
PicoGK_200px PicoGK The C#-based geometry foundation for all of our work at LEAP 71
ShapeKernel_200px ShapeKernel A generalized framework for creating computational geometry, based on PicoGK.
LatticeLibrary_200px LatticeLibrary An advanced library for creating complex lattice structures, based on ShapeKernel and PicoGK.
QuasiCrystal_200px QuasiCrystals A library to generate aperiodic tilings, such as Penrose Patterns (in 2D) and quasi-crystalline structures (in 3D).

Example projects

Check out these example projects to see how to build objects in PicoGK.

Repository
HelixHeatX_200px Helix Heat Exchanger An example how to build a heat exchanger using ShapeKernel and PicoGK
RoverWheel_200px Rover Wheel An example how to build rover-wheel-like objects using ShapeKernel and PicoGK

Under the hood

If you want to compile your own version of the PicoGK runtime and build custom installers, here's the source code.

You are usually not interested in these repositories as an end user of PicoGK.

Repository
PicoGKRuntime C++ source code for the PicoGK runtime module.
PicoGKInstaller Source code for the PicoGK installers

Tip

If you are looking for the PicoGK installers, download them here.

More information

To understand the motivation behind PicoGK, check out this series of articles on the authors' personal website.

For more examples of what you can do with PicoGK, check out our Instagram. follow us on X, and visit the LEAP 71 website.

2023-11-23 LEAP 71 GitHub 3

Image credits LEAP 71 / Fraunhofer IGCV (for multi material metal prints)

picogkruntime's People

Contributors

corrievs avatar leap71 avatar linkayser avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

picogkruntime's Issues

NaN numbers in LatticeBeam::fSdvFlatCone()

On the following line, it is possible under rare occasions to get NaN due to round-off errors leading to strange artefacts in the signed distance field for the flat capped cone in the render lattice methods for beams.

https://github.com/leap71/PicoGKRuntime/blob/d5f5ac38ab1c2090fb47b4c4f700553dd2c912aa/Source/PicoGKLattice.h#L163C56-L163C56

float x = std::sqrt(papa - paba * paba * baba);

Although not in the original implementation by Inigo - it may be worth considering absolute values or lower-bound clipping within the square root.

Results between different voxel size for offsets are inconsistent

There is a bug when rendering meshes, which is very apparent when offsetting at very small voxel sizes.

The discretized signed distance field we are using to represent our voxels shows aliasing artifacts and general "weirdness" the further (up and down) the voxel size deviates from 1.

This results in fairly "ugly" offsetted voxels for voxel sizes smaller than 0.1mm.

Specifiying strPicoGKLibPath does not work

Hi,

After building the runtime, I was not able to get it to run with the dylib inside the Dist folder as it is specified in the readme here.

After copying the dylib to the /usr/local/lib directory, it worked. 🙂

GLFW as git submodule + cmake version

Is it possible to make the glfw source as a git submodule component, rather than rely on retrieving the repository via cmake? The build script failed to retrieve the repository on Mac OSX Sonoma.

We already have to initialise the submodules for openVDB so it would seem sensible that it could be done for GLFW library.

Finally, is it necessary to have the latest version of cmake at v3.27? Is it a prerequisite for compiling the static library for openVDB?

Option to statically compile dependencies?

Would it be possible to add a configuration where the dependencies are statically compiled, instead of using .dll dependencies? It would be nice to be able to distribute just the picogk.dll.

Voxels.ProjectZSlice stopped working in v1.5

The Voxels.ProjectZSlice function stopped working in the latest v1.5 release. This can easily be recreated by launching PicoGKExamples.PrepForPrint.Task. Instead of building a solid base, it creates a stripe-like artifact in the voxel field.

Voxels.ProjectZSlice create degenerate signed distance field

The Voxels.ProjectZSlice function creates a degenerate signed distance field, because the signed distance values further away from the last slice are not updated accordingly. This needs a bit more elaborate solution.

If you are using ProjectZSlice to build a base for your object (which is the most common use), you can work around this, by projecting down below zero and then performing a boolean operation, cutting off the degenerate base.

See Ex_PrepForPrint.cs for a good example.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.