Pablo Díaz Viñambres
MSc Informatics @ TUM
Primimix: Semantic Planar Splatting for 3D Structured Reconstruction
Primimix is a hybrid scene-decomposition and rendering pipeline developed by Binyu Fang, Katy Grossmann, Billy Herrmann, Danit Niwattananan and myself for our TUM Data Innovation Lab project, originally titled Semantic Planar Splatting for 3D Structured Reconstruction and supervised by Prof. Dr. Olaf Wysocki from the CV4DT Chair at the University of Cambridge. The research problem we tackle is that 3D Gaussian Splatting renders indoor scenes beautifully, but only as an unstructured cloud of millions of kernels. While there are approaches in the literature that regularize those Gaussians, or represent them with alternative primitives (e.g. 2DGS, MeshSplatting, GaMeS…) there is still not a dominant representation that is photorealistic, geometrically accurate and structured. Our approach combines a dual primitive representation, including planes and superquadrics, that are optimized jointly with 2D Gaussians placed on top of them. This way, the primitives provide a scaffold for both foreground objects (superquadrics) and background planar regions (planes), and the Gaussians equipped with Spherical Harmonics coefficients add texture and geometric detail to the representation.
Given posed images alone, we densify a point cloud, segment it into instances, and split them into two primitive sets: bounded planes for structural surfaces, and superquadrics for furniture and clutter, together forming . Superquadrics are an eleven-parameter family spanning cuboids, cylinders and ellipsoids, defined by radii and shape exponents .
We then bind 2D Gaussian “skins” to every primitive in , first optimizing geometry against depth and normals, then freezing it to refine appearance. On a representative ScanNet++ scene, this lets Primimix explain the room with around 620 explicit blocks and 1.6M surface Gaussians, against the 1.4-2.2M fully unstructured Gaussians other splatting baselines need to render the same room with no explicit structure at all:
On the geometric side, Primimix leads both baselines on Chamfer distance, completeness and F-score on the ScanNet++ dataset:
| Method | Chamfer↓ | Accuracy↓ | Completeness↓ | F@5↑ |
|---|---|---|---|---|
| PlanarSplatting | 10.99 | 9.58 | 12.41 | 44.70 |
| 3D Gaussian Flats | 18.60 | 4.60 | 32.59 | 50.24 |
| Primimix (Ours) | 6.63 | 7.00 | 6.26 | 62.80 |
The project was awarded a 1.0 at TUM DI-Lab, and we’re now refining the method and working towards a publication.
GeMS: Geometry-aware Mesh Splatting
GeMS (Geometry-aware Mesh Splatting) was my final project for the Machine Learning for 3D Geometry (ML3D) course taught by Prof. Angela Dai at TUM, done together with Shao Jie Hu-Chen. We build on a CVPR 2026 paper, MeshSplatting, which replaces the Gaussian primitives found in standard 3D Gaussian Splatting with an explicit, opaque triangle soup representation, which is later triangulated into a mesh. While the approach is interesting and yields decent photometric quality, it usually produces noisy and broken geometry on simple planar regions such as walls and floors. GeMS attempts to reduce these effects, caused by the underconstrained photometric objective, by adding three regularization terms on top of the photometric loss during training: a Laplacian smoothness + normal-consistency term that dampens vertex noise and folding, a plane-alignment loss (cosine-alignment with normal + L1 with center) which uses an optimized representation provided by PlanarSplatting, and a semantic-boundary loss that discourages triangles from being shared between two different objects.
On Mip-NeRF360 and ScanNet++, GeMS clearly improves geometric quality, with Chamfer-L1, F-score and normal consistency all improving, while keeping photometric quality on par with or better than the baseline. It also decreases the fraction of ambiguous triangles shared between object instances (12.33% down to 10.33% on our ScanNet++ subset). The plane alignment component () turned out to be the single strongest component of our method:
| Method | PSNR↑ | Chamfer-L1↓ | F-score↑ | Shared Tri.↓ |
|---|---|---|---|---|
| MeshSplatting | 19.63 | 0.110 | 0.540 | 12.33% |
| + | 19.72 | 0.068 | 0.588 | 11.29% |
| + | 20.59 | 0.056 | 0.629 | 12.85% |
| + | 20.54 | 0.068 | 0.571 | 12.98% |
| GeMS (Ours) | 19.995 | 0.062 | 0.630 | 10.33% |

Matching Disconnected Shapes: 3D Correspondence under Partiality with Disconnection
Shape matching is a classical problem in Geometry Processing that aims to find point-to-point correspondences between two 3D surfaces. Partial shape matching does it when one of them is incomplete. Most methods, including the one we build on (ULRSSM), lean on functional maps: a shared basis built from the eigenfunctions of each shape’s Laplace-Beltrami operator (LBO), which implicitly assumes a single connected surface. If one cuts a shape into several spatially disconnected fragments, the functional map falls apart. Existing benchmarks (e.g. SHREC16, BeCoS) only handle the single connected component. Together with Mehdi Chehaider, I explored what happens under real disconnection, where existing correspondence methods fail almost immediately.
We first built a dataset for this, adapting the BeCoS codebase that uses raycasting for fragmenting shapes over different base benchmarks (e.g. SCAPE, FAUST, DeformingThings4D, TOSCA). Beyond a random-viewpoint baseline, we designed a non-convexity-driven viewpoint selection strategy: it renders depth maps from candidate directions, detects the depth discontinuities that split a silhouette, and samples the views that yield well-balanced disconnected components. This way, we are able to generate hard examples quickly — drag the shapes below to see one test mesh per dataset, with each of its largest disconnected components rendered in its own color and stray sliver fragments greyed out:
Reconstruction as a matching prior
Our core idea for actually solving the matching problem is using a 3D generative model as a shape prior to reconstruct the full object from its fragments, match against that reconstruction, and then project the correspondence back onto the disconnected mesh:
We compared four reconstruction approaches, first a baseline geometric bridging method, then point-cloud completion via PoinTr and Poisson Surface Reconstruction, and finally two image-to-3D generative models, Hunyuan3D and Pixal3D. We trained ULRSSM on each and measured geodesic error and reconstruction quality. Hunyuan3D came out on top, producing smooth, well-aligned reconstructions that preserved most of the correspondence quality, while bridging turned out to be a surprisingly strong non-learned baseline on human meshes. Our main finding is that matching disconnected shapes is now a tractable problem thanks to recent 3D generative models, and we aim to keep working on this line of research and publish a paper describing the detailed approach soon.
Results
Every mesh below is colored by transferring the Template’s own coordinate-based coloring through its predicted point-to-point correspondence, so a smooth, coherent color means accurate matching and a scrambled color means it broke down. You can choose to show the mapping (via Nearest-Neighbors) to the disconnected mesh, which is what’s evaluated, or the full reconstruction, which is what’s matched.
The following two tables confirm the visual results. While Hunyuan3D and Pixal3D are mostly tied in terms of reconstruction quality, Hunyuan3D leads in matching quality, which we attribute to a more regular geometry.
FAUST - reconstruction method metrics
| Method | CD-L1 (cm)↓ | CD-L2 (cm²)↓ | F1@2cm↑ | F1@5cm↑ |
|---|---|---|---|---|
| PoinTr | 3.09±1.28 | 27.95±23.31 | 0.58±0.16 | 0.81±0.11 |
| Hunyuan3D | 2.41±1.02 | 15.57±19.15 | 0.63±0.15 | 0.90±0.08 |
| Pixal3D | 2.56±1.32 | 19.33±30.75 | 0.59±0.14 | 0.90±0.10 |
FAUST - matching quality metrics
| Method | Geodesic Error↓ | AOC↑ |
|---|---|---|
| Bridging | 0.230±0.128 | 0.276±0.189 |
| PoinTr | 0.311±0.086 | 0.140±0.136 |
| Hunyuan3D | 0.078±0.097 | 0.561±0.194 |
| Pixal3D | 0.327±0.228 | 0.246±0.289 |
Efficient Neighbourhood Search in 3D Point Clouds Through Space-Filling Curves and Linear Octrees
This is my first research paper, written in collaboration with Miguel Yermo, Ph.D., Silvia R. Alcaráz, Ph.D., Óscar G. Lorenzo, Ph.D., Francisco F. Rivera, Prof. and José C. Cabaleiro, Prof. and available as a preprint in arXiv. It was developed as a continuation and expansion of my BSc Informatics thesis. The library developed in C++ is also available as open source in GitHub (see link above).
Abstract
This work presents an efficient approach for neighbourhood searching in 3D point clouds, combining spatial reordering leveraging Space-Filling Curves (SFC), specifically Morton and Hilbert curves, with a linear Octree implementation. We also propose specialised search algorithms for fixed-radius and kNN queries, based on our linear Octree structures. Additionally, we introduce the novel concept of kNN locality histogram, which can be easily computed to characterise locality in data accesses, and we found to be directly related to cache misses and search performance. Our experiments reveal that SFC reordering significantly improves access to spatial data, reducing the number of cache misses from 25% to 75% and runtime by up to 50%. Moreover, we compare our proposal with several widely used Octree and KDTree implementations. Our method achieves a significant reduction in search time, up to 10x faster than existing solutions. Additionally, we analysed the performance of our neighbourhood searches (parallelised using OpenMP), demonstrating high scalability with the number of cores and the problem size. Notably, we observed a speedup of up to 36x when executing fixed-radius searches in a system with 40 cores. The results obtained indicate that our methods provide a robust and efficient solution for applications that require fast access to large-scale 3D point neighbour sets.


Study and improvement of octree structures' performance for neighbour search in 3D point clouds
In my Informatics BSc thesis, I developed fast algorithms for spatial queries in 3D point clouds . The tasks are quite simple, given a center , we either find all points within a given distance (fixed-radius queries) or we find the closest points (kNN queries). These two neighbourhood-finding operations are extremely common and often become a computational bottleneck in large cloud processing for remote sensing and photogrammetry. We develop two approaches to make them as fast as possible:
- Point cloud reordering via Space Filling Curves (SFCs), where we alter the order of the cloud in-memory to reduce cache misses and improve performance by as much as 75%.
- An optimized linear octree data structure with a novel algorithm for fast point retrieval in fixed-radius searches, and an adaptation of a known algorithm for kNN searches to it. Both of these algorithms excel in performance and even beat SoTA libraries in terms of performance (up to 10x faster, better scalability on and ), memory usage (70% less, compact layout) and construction time (parallel construction, up to 30x faster).
The thesis received the maximum grade (10/10) and was recognized with honors as one of the best BSc Thesis in the class. After my graduation, me and my supervisors kept working on this project and we expanded it to a short paper for the SARTECO Parallelism Conference 2025 and a full journal paper submitted and available in arXiv. Check the research project entry for more details.
The Fast Fourier Transform
The topic I chose for my Mathematics BSc thesis was Fourier Transforms, a mathematical tool that has fascinated me for years and that I wanted to explore as deeply as possible. This work starts with a compilation of important results on spaces, particularly , where we first define the (continuous) Fourier Transform (FT). We later prove the Plancherel theorem for extension to and hint at multi-dimensional FT construction and properties.
During the second part of the work, we provide a solid mathematical framework for the Discrete FT (DFT). This DFT can be thought of as a sampling of a continuous FT, and can be defined neatly via roots of unity and Fourier matrices. With the DFT defined, we can start talking about Fast FT (FFT) algorithms for its efficient computation. First, we introduce the most common Cooley-Tukey algorithm, both in its Decimation-In-Time (DIT) and Decimation-In-Frequency (DIF) approaches, that use the common algorithmic idea of divide and conquer to reduce the complexity of computing an N-point DFT from to , for , that allows for very fast convolutions on the frequency domain through the discrete convolution theorem. Other FFT algorithms exist, such as split-radix FFTs and Rader or Bluestein FFTs for prime .
To conclude the work, we review important applications on signal processing (low, high and band pass filters, spectral analysis of guitar chords) and image compression (the JPEG format). Overall, I learned a great deal and had a lot of fun writing this thesis. The work received a very high grade (9.8/10). I thank Lucía López Somoza for her great supervision!

Project Hestia
Hestia is a project from the RoboTUM students club with the goal of building a robotized kitchen environment that can perceive ingredients and containers, operate smart appliances, and eventually handle a cooking recipe end to end. The project is still in an early phase. We kicked off in April 2026 and spent the first months scoping the perception, action and physical (hardware) layers of the system in simulation, while building out partnerships. We have so far secured a strong foundation and multiple partnerships: MIRMI (TUM’s robotics institute) is providing compute and access to Franka Emika arms, BSH (Bosch/Siemens home appliances) is sponsoring smart kitchen appliances, and SICK is supplying RGB-D cameras for perception.
In August 2026 we ran our first hackathon, where the team got hands-on for the first time: operating BSH countertop appliances through basic manipulation and teleoperation, and starting early experiments fine-tuning vision-language-action (VLA) models alongside more classical control of a Franka Emika arm. In parallel, our hardware team began prototyping the “smart countertop”. We intend to develop a coil-array-driven, magnetic-levitation surface (inspired by Festo’s SupraMotion and Planar Motor systems) meant to glide containers around the kitchen without any extra mechanical manipulation.
AI for Industry Challenge: Robotic Cable Insertion
The AI for Industry Challenge is a robotics competition organized by Intrinsic and Open Robotics, targeting one of electronics manufacturing’s most tedious bottlenecks: dexterous cable and connector insertion. As RoboTaNGo — a joint team of RoboTUM members and engineers from TNG Technology Consulting — we entered the qualification phase, splitting into data generation, policy research and deployment workstreams.
First, we had to develop a “cheat code” policy: since the qualification simulator exposes ground-truth object poses, we wrote an oracle controller that reads the cable and port positions directly and computes the pick-and-insert trajectory geometrically, without any learning involved. Due to slightly faulty physics in the simulation environment, and having to trade off simplicity and predictability (for easier VLA training) with accuracy, we had to rewrite this policy many times. Once we were done, it became our main tool for generating clean demonstration data.
After collecting good quality data with our cheat code policy, we started fine-tuning NVIDIA’s Isaac GR00T foundation (VLA) model. To feed it, we built a LeRobot-based recording pipeline wired into the challenge’s ROS 2 stack. We combined episodes generated automatically by the cheat code oracle across randomized scenarios, plus a teleoperation setup that let a team member drive the simulated arm directly and record straight into LeRobot’s dataset format. We used teleop both for regular demonstrations and for “recovery” episodes, which are corrective examples recorded after the trained policy’s own failures. Finally, we packaged the fine-tuned model behind a small server/client split so a GPU-heavy inference server could run separately from the lightweight ROS 2 node we submitted. Sadly, the competition was strong and we ran into some issues with our GR00T policy that we couldn’t address in time, so we didn’t score enough points to qualify for the next phase. Looking back, we’d have benefited from first building a simpler baseline (e.g. multi-view reconstruction paired with a straightforward policy for tracking a predicted pose) before committing fully to VLAs. Foundation models are built to generalize broadly, but our task was narrow and localized, so they may not have been the best fit: they’re harder to train, need more data collection, and are less stable and less robust than more classical approaches.
Project PUMA
Along with some members of RoboTUM and Maxwell Robotics, we developed a software stack for the Deep Robotics M20 Lynx quadruped robot. This model originally comes with a proprietary software stack that is not easy to extend, so we rewrote it from scratch to improve its capabilities. We first built a ROS2 interface layer that interacts with robot telemetry, sends motion commands, and reads data streams from the two cameras and LiDAR sensors. On top of this, we built an autonomy stack for mapping and waypoint following. This was my first project as a member of RoboTUM and a great initiation to the world of robotics!

Introduction course to Python and its role in Data Analysis
During our last semester at Universidade de Santiago de Compostela, Xiana Carrera and I decided to give back to the faculty of Mathematics and organize a small-scale course. We decided to focus on one of the topics that is not covered on the standard BSc Mathematics curriculum, but that is extremely important to a large amount of students, Python programming and Data Analysis.
The course contents were thoroughly organized and curated to be able to teach as much as possible in 8 sessions spanning a total of 16 teaching hours. We coded interactive slides using reveal.js for students to follow during class. Topics included a basic introduction to python programming constructus (control flow, functions, data types, I/O, lambdas, OOP, ) and how to use the most fundamental packages for data analysis (NumPy, Pandas, matplotlib, seaborn and scikit-learn). We wrapped up the course with a data analysis project on the role of music streaming on psychological parameters.
Overall, the course received a lot of interest, having to select 30 students among 100+ applications, and a satisfaction survey highlighting the quality of the teaching received, as well as the materials prepared.
What geometry does not tell you: The Squaring of the Circle
The Emmy Noether Awards was a mathematics outreach video competition run by popular youtuber Mike Mates in 2023. I chose to participate along with Xiana Carrera and create a video on the classic problem of Squaring the Circle for it.
Having completed a course on our previous semester on Galois Theory, where we learnt about topics like the algebraic unsolvability of quintics and constructible numbers, we felt motivated to create an entry on a related problem. The approach was to start with classical rule-and-compass constructions, such as those found at Euclid’s Elements, and arrive at modern number theory, in particular, at the proof that is a transcendental number, which demonstrates the impossibility of the circle-squaring problem.
On the visual side, we decided for a hybrid approach, combining timelapses were we draw with an actual ruler and compass and animations made with 3blue1brown’s manim library.
Our video was a great hit! At the time of writing, it accumulates over 137.000 views and earned us one of the awards in the competition. For us, however, the greatest reward was the flood of positive comments on it, and the feeling of having inspired many young mathematicians with it.
HackaTUM
For HackaTUM 2025, I teamed up with David Atanasoski, Vinicius Agreste Martines dos Santos and Merve Öztekin to participate on the Logitech track and build a wellness plugin for Logitech Actions+ ecosystem. The plugin featured interactions with webcams, haptic mouses and the Options+ input panel. We included multiple features, such as:
- Social media time spent trackers.
- Notion tasks management.
- Energy level and stretch reminders.
- Pomodoro timer.
- Drowsiness detection.
Although we did not win any prize for this, we were among the shortlisted teams on the track, and we had a lot of fun creating this over the weekend!
HackUDC
Sentikelia was our winning entry for the Kelea track at HackUDC 2025, developed with Pablo Landrove Pérez-Gorgoroso, Nicolás Rosales Gómez and Robert Ostrozhinskiy. Our task was to develop a comprehensive digital companion that provides a safe space for self-reflection, daily logging and builds a dynamic psychological profile. It then uses this information to offer tailored advice, essentially serving as a virtual coach that guides users through their own thoughts and helps them identify long-term mental health patterns. Some of the key features are:
- Smart Journaling: An intuitive daily diary to safely log thoughts, feelings, and personal experiences.
- Personality Analysis: Continuously evaluates journal entries to understand your unique emotional states and personality traits over time.
- Virtual Coach: Delivers personalized, actionable guidance and support based on your evolving psychological profile.
- AI-Powered Reflection: Leverages artificial intelligence to analyze your past records and prompt you with meaningful questions, helping you gain deeper self-awareness.
The project was built with a modern stack, featuring a frontend with Vite and TailwindCSS, a Backend using FastAPI with Uvicorn and a MongoDB+PyMongo database and ORM model. Regarding AI, we used gpt-4o-mini as a general-purpose LLM as well as finetuned BERT models for personality and sentiment analysis.

UniversityHack
For this data analysis competition, my teammates Pablo Landrove Pérez-Gorgoroso and Xiana Carrera and I developed an end-to-end pipeline for predicting the final production yield of biomanufacturing bioreactors. We were tasked with taking large, disjointed datasets, ranging from general batch logs to high-frequency sensor readings, and transforming them into a unified format to understand exactly what drives a successful cultivation process.
We first cleaned the data across multiple manufacturing phases (pre-inoculation, inoculation and final cultivation) and selected the most salient features driving the production. After this, we trained a predictive machine learning model to estimate the yields and applied interpretability tools. We found that factors like minimum glucose levels, changes in fluid turbidity, and even the ambient humidity in the cultivation room were among the strongest predictors of manufacturing success.
Our team achieved the 1st place on the USC local phase of the competition, qualifying to the national phase. Personally, this project helped me deepen my understanding of classical Machine Learning models and workflows for complex data analysis.
Tabster
Tabster was a full-stack web development project done for the Software Atelier 3: The web course at USI. Our team, consisting of Pablo Landrove Pérez-Gorgoroso, Elvira Baltasar, Vladyslav Kotov, Guglielmo Daniele Mazzesi, Eduard Bilous and me developed a website for rendering, uploading and playing interactive guitar tablatures, in an attempt to recreate and expand on popular website Songsterr.
This project idea was pitched by Pablo Landrove and myself to the professor Cesare Pautasso. We are both electric guitar players and thought of building something related to one of out biggest hobbies! After a couple months of grinding, we arrived at a consistent and clean design, that had great performance and a simple to use interface.
Overall, this was one of the class projects I have had the most fun with, and taught me a great deal about software engineering and web development in practice. The project was selected as one of the best on the class and presented in front of hundreds of people during the faculty day!