We introduced a method which automatically takes a designer surface and minimally modifies it to be suitable for fabrication via filament winding under a fixed set of winding parameters.
An overview of our iterative method to modify an existing surface in order to make it more suitable for filament winding.
(a) Designer's surface
(b) Modified surface
(c) Hausdorff distance
(a) A surface might not be suitable for filament winding due to the fiber not staying in contact with the surface or from sparse coverage.
(b) The surface is automatically modified to fix these issues while keeping the designer's intent.
(c) A heatmap of the change in the input surface.
Both the physics-based geodesic solver for the winding paths and surface modification are implemented in C++ with Eigen.
The surface modification works via optimization of the following objective to enforce convexity at certain points along the surface to influence the geodesic trajectory. (See §4 of the paper for more details.)
Existing single-image view synthesis pipelines often do not account for view-dependent lighting.
We introduce a modular network to predict pixel-wise view-dependent shading to correct these artifacts in existing pipelines.
Example of a camera moving in a scene generated using 3D Moments [Wang22]. The left is the result generated by 3D Moments by itself, and the right is the result with our method applied.
Our method does not guarantee physically accurate shading, but instead provides more plausible lighting in view synthesis.
Watch the accompanying video to see additional results.
The key insight is splitting view synthesis into pixel shading and relocation.
For instance, a point can be visible from views c and c' yet have different shading because the same BRDF is sampled differently.
By modifying a C++ ray tracer to render a scene from view c but using the secondary rays from a novel view c', we generated a synthetic dataset used to train our reshading model.
§ Automated Shape Modification to Support Filament Winding
ICLR 2025
Brandon G. Nguyen†, Chunkai Fu†, Jung Hoon Seo†, Ryan S. Zesch†, Samson Zhou(† denotes equal contribution)
By using emergent query probability distributions from real-life data to inform the construction of two classical search data structures, skip-lists and kd-trees, we attain an upper-bound on the expected search time in O(min(H(f),logN)).
Real world data queries often have skewed Zipfian distributions with entropy H(f)∈O(1), meaning our augmented structures can be expected to have constant search time.
We prove for queries i in the dataset [n] that the search time is bounded by O(H(fi)) where fi is the predicted query probability for i and H(fi) is the entropy; and for i∈[n] we have a worst-case O(logn) search time.
In datasets with highly skewed distributions, H(f)≪logn so we see meaningful speed-ups.
Additionally, we guarantee robustness against (α,β)-noisy oracles that give imperfect predictions fi≜αpi+β, with α being the multiplicative and β the additive error on the true query probability pi for i∈[n].
Experimental results on a synthetic dataset using our kd-tree construction.
Both plots show the average depth for search queries within our dataset, with increasing noise moving towards the bottom right.
The left plot shows the search-time traditional kd-tree with constant depth regardless of data distribtion, whereas our kd-tree is able to terminate the search at much lower depths compared to the traditional kd-tree even with very noisy predictions.
Implementation of Position Based Fluids [Macklin13] using C++/CUDA with spatial hashing to simulate hundreds of thousands of fluid particles in real-time (60+ FPS).
The left shows a splash example and the right shows a double dam break.
Notice when the fluid particles collide that we see that the particles tend to stick togehter rather than exploding into many smaller pieces, this is due to the XSPH viscosity correction adding a surface tension effect.
Additionally, the use of vorticity confinement prevents over dampening of the system due to numerical inaccuracies.
A quadruple dam break featuring hundreds of thousands of particles, running in real time.
Implementation of rigid body dynamics and contact modelled as a BLCP with a projected Gauss-Seidel (PGS) solver, Coulomb friction, and SDF-SDF collision.
Example scene.
§ Single Image 3D View Synthesis with Triplane Denoising Diffusion GAN
Preliminary research under Dr. Nima Kalantari, Oct. 2023
We modify DiffusionGAN from NVIDIA [Xiao22] to synthesize consistent novel-views either from a single image or unconditionally.
The model accepts a noised image with its camera pose and outputs a triplane. A feature decoder network predicts color and
depth from accumulated features along rays from a novel camera pose. End-to-end training is done with an
adversarial loss on the color and disparity triplane images from various poses.
(a) Color
(b) Disparity
We generate unconditional triplanes by passing pure Gaussian noise to the model. Above is a render of an unconditionally triplane generated from a model trained on ShapeNet Cars.
An interactive implementation of Walk on Stars [Sawhney23] and Walkin' Robin [Miller24] in the browser using WebGL2, solving a Laplace equation on an arbitrary 2D domain without meshing, computed in parallel with a compute shader.
Example of Walk on Stars on the Laplace equation Δu=0 on Ω,u=g on δΩD,∂n∂u=0 on δΩN with Dirichlet (∂ΩD) boundaries on the top and bottom and Neumann (∂ΩN) on the left and right.
(a) μ=0.0 (pure Neumann)
(b) μ<1.0 (Robin)
(c) μ=∞ (pure Dirichlet)
Example of Walkin' Robin with with varying Robin coefficents along the entire boundary, we can see as μ→∞ that the reflectivity of the boundary lessens.