<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:media="http://search.yahoo.com/mrss/"
	
	>

<channel>
	<title>Danci Shen - Tech Art &#124; Virtual Production</title>
	<link>https://omolism.cargo.site</link>
	<description>Danci Shen - Tech Art &#124; Virtual Production</description>
	<pubDate>Wed, 07 Jan 2026 03:49:46 +0000</pubDate>
	<generator>https://omolism.cargo.site</generator>
	<language>en</language>
	
		
	<item>
		<title>Works</title>
				
		<link>https://omolism.cargo.site/Works</link>

		<pubDate>Wed, 07 Jan 2026 03:49:46 +0000</pubDate>

		<dc:creator>Danci Shen - Tech Art &#124; Virtual Production</dc:creator>

		<guid isPermaLink="true">https://omolism.cargo.site/Works</guid>

		<description>
.reel-link {
    margin-left: auto;
    font-size: 1.1rem;
    font-weight: 300;
    color: rgba(255, 255, 255, 0.4);
    letter-spacing: 0.05em;
    text-decoration: none;
    position: relative;
    white-space: nowrap;
    transition: color 0.3s ease, border-color 0.3s ease;
    padding: 0.4rem 1.1rem;
    line-height: inherit;
    align-self: center;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 999px;
}

.reel-link::after {
    display: none;
}

.reel-link:hover {
    color: #fff;
    border-color: rgba(255, 255, 255, 0.6);
}
/* ─── Portfolio Grid ─── */
.portfolio-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 4rem 3rem;
    padding: 2rem 0 4rem;
}
.blog-header {
    margin-bottom: 4rem;
}

.blog-header h1 {
    font-size: clamp(3rem, 8vw, 5rem);
    font-weight: 700;
    color: #fff;
    margin-bottom: 1rem;
    line-height: 1;
}

.blog-subtitle {
    font-size: 1.4rem;
    color: rgba(255, 255, 255, 0.5);
    font-weight: 300;
    line-height: 1.6;
    max-width: 600px;
}

.hero-text {
    font-size: clamp(1.2rem, 1.5vw, 1.2rem);
    font-weight: 300;
    letter-spacing: 0.02em;
    margin: 0rem 0 2.5rem;
    line-height: 1.6;
}

/* ─── Filter Nav ─── */
.filter-nav {
    display: flex;
    gap: 2rem;
    margin-bottom: 3rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    flex-wrap: wrap;
}

.filter-item {
    font-size: 1.1rem;
    color: rgba(255, 255, 255, 0.4);
    cursor: pointer;
    transition: color 0.3s ease;
    position: relative;
    letter-spacing: 0.05em;
    font-weight: 300;
    -webkit-user-select: none;
    user-select: none;
    -webkit-tap-highlight-color: transparent; /* removes grey flash on iOS */
    touch-action: manipulation;              /* prevents double-tap zoom delay */
    padding: 0.5rem 0;                       /* larger touch target */
}

.filter-item:hover {
    color: rgba(255, 255, 255, 0.8);
}

.filter-item.active {
    color: #fff;
}

.filter-item::before {
    content: '/';
    margin-right: 0.5rem;
    opacity: 0.5;
}

.filter-item::after {
    content: '';
    position: absolute;
    bottom: -2px;
    left: 0;
    width: 0;
    height: 1px;
    background: rgba(255, 255, 255, 0.6);
    transition: width 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

.filter-item:hover::after {
    width: 100%;
}

.filter-item.active::after {
    width: 100%;
    background: rgba(255, 255, 255, 0.9);
}

/* ─── Card Base ─── */
.portfolio-card {
    text-decoration: none;
    display: block;
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.45s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.45s cubic-bezier(0.16, 1, 0.3, 1);
}

.portfolio-card[data-hidden="true"] {
    opacity: 0;
    transform: translateY(12px);
    pointer-events: none;
    visibility: hidden;
    /* DO NOT use position:absolute here — it breaks grid flow */
    max-height: 0;
    overflow: hidden;
    margin: 0;
    padding: 0;
}
.portfolio-card[data-hidden="false"],
.portfolio-card:not([data-hidden]) {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
    visibility: visible;
    max-height: none;
    overflow: visible;
}
/* ─── Card Image ─── */
.card-image-wrapper {
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background: #111;
    margin-bottom: 1.2rem;
    position: relative;
}

.card-image-wrapper::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.4) 100%);
    opacity: 0;
    transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1);
    pointer-events: none;
    z-index: 1;
}

.portfolio-card:hover .card-image-wrapper::after {
    opacity: 1;
}

.card-image-wrapper img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    filter: brightness(0.95);
    transition: transform 0.8s cubic-bezier(0.16, 1, 0.3, 1),
                filter 0.6s ease;
}

.portfolio-card:hover .card-image-wrapper img {
    transform: scale(1.06);
    filter: brightness(1);
}

/* ─── Card Content ─── */
.card-content {
    padding: 0;
}

.card-header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 0.6rem;
    gap: 1rem;
}

.card-title {
    font-size: clamp(1.1rem, 1.8vw, 1.5rem);
    font-weight: 400;
    color: #fff;
    line-height: 1.25;
    letter-spacing: -0.015em;
    transition: opacity 0.4s cubic-bezier(0.16, 1, 0.3, 1),
                transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
    flex: 1;
}

.portfolio-card:hover .card-title {
    opacity: 0.5;
    transform: translateX(4px);
}

.card-year {
    font-size: 1.2rem;
    color: rgba(255, 255, 255, 0.35);
    font-weight: 300;
    white-space: nowrap;
    flex-shrink: 0;
    letter-spacing: 0.02em;
    transition: opacity 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

.portfolio-card:hover .card-year {
    opacity: 0.7;
}

.card-description {
    font-size: 1.1rem;
    color: rgba(255, 255, 255, 0.55);
    line-height: 1.55;
    margin-bottom: 0.9rem;
    font-weight: 300;
    letter-spacing: 0.005em;
    transition: color 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}

.portfolio-card:hover .card-description {
    color: rgba(255, 255, 255, 0.7);
}

.card-meta {
    font-size: 1rem;
    color: rgba(255, 255, 255, 0.3);
    line-height: 1.5;
    font-weight: 300;
    letter-spacing: 0.01em;
}

.card-tags {
    display: flex;
    gap: 0.7rem;
    flex-wrap: wrap;
    margin-top: 0.7rem;
}

.card-tag {
    font-size: .8rem;
    color: rgba(255, 255, 255, 0.45);
    letter-spacing: 0.03em;
    transition: color 0.3s ease;
}

.portfolio-card:hover .card-tag {
    color: rgba(255, 255, 255, 0.6);
}


@media (max-width: 768px) {
    .hero-text {
        font-size: 1rem;
        margin: 2rem 0 2rem;
    }

    .filter-nav {
        gap: 1.2rem;
        margin-bottom: 2rem;
    }

    .filter-item {
        font-size: 0.85rem;
    }

    .portfolio-grid {
        gap: 3rem;
        padding: 1rem 0 3rem;
    }

    .card-title {
        font-size: 1.2rem;
    }

    .card-description {
        font-size: 0.85rem;
    }
}




Works.


Building immersive worlds for storytelling.



    All projects
    Procedural &#38;amp; Tool Dev
    Real-time
    Look Dev
    XR &#38;amp; Virtual Production
    AI  Reel︎︎︎




    
    
        
&#60;img width="800" height="450" width_o="800" height_o="450" data-src="https://freight.cargo.site/t/original/i/194f9e4ea27c73b9f26fa70fd8c5cb8dfd8a8bdc79820f5745a3a869a44dc065/danciedit0215backup_1_v1_2.gif" data-mid="245441975" border="0"  src="https://freight.cargo.site/w/800/i/194f9e4ea27c73b9f26fa70fd8c5cb8dfd8a8bdc79820f5745a3a869a44dc065/danciedit0215backup_1_v1_2.gif" /&#62;

        
            
                Gentle Monster XR
                2026
            
            Virtual Production Lead on a fashion-tech virtual production shoot in collaboration with Harbor Picture Company and Electric Theatre Collective. Responsibilities spanned ideation, look development and on-set real-time optimization for LED volume delivery.
            Unreal Engine, Virtual Production
            
                Look Development
                On-set Optimization
                VP Pipeline
            
        
    

    
    
        
&#60;img width="1067" height="600" width_o="1067" height_o="600" data-src="https://freight.cargo.site/t/original/i/58b679479aef88c2175ca0392b9544ff67eccaed1d22d9b64388cf7811afab33/HUD---Symbiosis-From-Nature-and-Technoogy-Online-Video-9_1.gif" data-mid="242534778" border="0"  src="https://freight.cargo.site/w/1000/i/58b679479aef88c2175ca0392b9544ff67eccaed1d22d9b64388cf7811afab33/HUD---Symbiosis-From-Nature-and-Technoogy-Online-Video-9_1.gif" /&#62;

        
            
                HUG
                2024
            
            Collaborative short film with a focus on technical pipeline integration. Handled Houdini to Unreal workflow for close up simulation sequences and Look development in Unreal Engine.
            Houdini, Unreal Engine, Blender
            
                Simulation
                Pipeline Integration
                Visual Effects
            
        
    

    
    
        
&#60;img width="3079" height="1732" width_o="3079" height_o="1732" data-src="https://freight.cargo.site/t/original/i/177b6d66e13b2b5905f854f31a3e485374824095091ef4b193577e923f0036c1/ScreenShot00038.png" data-mid="245556738" border="0"  src="https://freight.cargo.site/w/1000/i/177b6d66e13b2b5905f854f31a3e485374824095091ef4b193577e923f0036c1/ScreenShot00038.png" /&#62;

        
            
                AI Voxel &#124; NVIDIA AI Summit
                2026
            
            A creative pipeline built in 48 hours that converts AI-generated images into real-time voxel worlds. The workflow integrates Gaussian Splatting, custom Python tooling for USD voxelization, and Unreal Engine 5 for final rendering and interactivity.
            Unreal Engine, OpenUSD, Python
            
                Gaussian Splatting
                USD Tooling
                Python
                AI
            
        
    

    
    
        


        
            
                Lotos Station
                2025
            
            Tech Lead on a real-time virtual production shoot. Covered lighting, color grading, and on-set optimization.
            Unreal Engine, Substance Sampler, Disguise
            
                VP Pipeline
                Lighting
                Color Grading
                On-set Optimization
            
        
    

    
    
        


        
            
                Solaris Gate
                2024
            
            A cinematic UE5 environment project. Built hero assets with texturing and used Niagara FX for effects.&#38;nbsp;
            Unreal Engine, Maya, Substance Painter
            
                Environment Art
                Material System
                Niagara FX
                Look Development
            
        
    

    
    
        


        
            
                Blender to Unity Addon &#124; Unity Editor Script
                2025
            
            An end-to-end automation tool pairing a custom Blender Addon with a Unity Editor script. The toolkit auto-renames assets, enforces industry-standard naming conventions, and reconstructs the full hierarchy in Unity with a single click, eliminating manual cleanup across the import pipeline.
            Python, C#
            
                Pipeline Automation
                Python Scripting
                C# Editor Tool
            
        
    

    
    
        


        
            
                Aako App
                2025
            
            Developed shaders and procedural VFX in Reality Composer Pro for a shipped iOS AR application. Shader work included bubble material with diverse visual expressions and an integrated background blur effect, optimized for mobile real-time performance.
            Reality Composer Pro, Xcode
            
                AR Application
                Shader Development
                Mobile Optimization
            
        
    

    
    
        
&#60;img width="1249" height="703" width_o="1249" height_o="703" data-src="https://freight.cargo.site/t/original/i/3c1f914e1f6c3292a5be7fd4806ed1a0691849aa9befc377530eb8a54d12d884/we-oasis.png" data-mid="242534761" border="0"  src="https://freight.cargo.site/w/1000/i/3c1f914e1f6c3292a5be7fd4806ed1a0691849aa9befc377530eb8a54d12d884/we-oasis.png" /&#62;

        
            
                We(Oasis)
                2021
            
            An experimental project exploring AI as a generative texture medium. A StyleGAN2 model was trained on 500+ photographs via Runway, with the resulting outputs applied as surrealist surface textures across 3D renders, exploring a visual language at the boundary of AI and human authorship.
            Blender, Adobe Dimension, Runway StyleGAN2
            
                StyleGAN2
                Generative AI
                Art Direction
            
        
    

    
    
        
&#60;img width="1067" height="600" width_o="1067" height_o="600" data-src="https://freight.cargo.site/t/original/i/c915a614a5718d8614eb80c5594ca8734f702fb3cafc958babcfcdb7eb68c1c2/aurorawispers_v1_2.gif" data-mid="242534782" border="0"  src="https://freight.cargo.site/w/1000/i/c915a614a5718d8614eb80c5594ca8734f702fb3cafc958babcfcdb7eb68c1c2/aurorawispers_v1_2.gif" /&#62;

        
            
                Aurora
                2025
            
            Real-time FX built with Niagara FX. Includes a Blueprint driven skybox system exposing global parameters for color, density, movement, etc., allowing full scene mood control from a single interface without touching individual emitters.
            Unreal Engine, Niagara FX
            
                Niagara FX
                Blueprint System
                Particle Systems
            
        
    

    
    
        
&#60;img width="900" height="506" width_o="900" height_o="506" data-src="https://freight.cargo.site/t/original/i/eb135e44ec8225dd85146ea9d6a7d27d96e88fb73295a391582d0f5f496c7212/KineticAnimation_2.gif" data-mid="242534774" border="0"  src="https://freight.cargo.site/w/900/i/eb135e44ec8225dd85146ea9d6a7d27d96e88fb73295a391582d0f5f496c7212/KineticAnimation_2.gif" /&#62;

        
            
                Kinetic Animation
                2025
            
            A fully procedural mechanical animation built in Houdini VEX with no manual keyframing. Tangent calculation was implemented in VEX to drive per-component rotation and orientation.
            Houdini, Karma, Substance Designer, Adobe Suite
            
                Houdini VEX
                Procedural Rigging
                Procedural Animation
            
        
    

    
    
        
&#60;img width="1066" height="600" width_o="1066" height_o="600" data-src="https://freight.cargo.site/t/original/i/7e81bf62f057b0e2f6baf8d6535a82c2ea337592ef73c698dc97a65e2ca4956e/escapethegallery_v1_1_1.gif" data-mid="242534780" border="0"  src="https://freight.cargo.site/w/1000/i/7e81bf62f057b0e2f6baf8d6535a82c2ea337592ef73c698dc97a65e2ca4956e/escapethegallery_v1_1_1.gif" /&#62;

        
            
                Escape the Gallery
                2025
            
            A first-person escape game developed in Unreal Engine. Covered ideation, hero asset modelling, Blueprint scripting for gameplay mechanics, UI design and implementation, from initial concept through playable build.
            Unreal Engine
            
                Unreal Blueprint
                Game UI
                Level Design
            
        
    

    
    
        
&#60;img width="1920" height="1080" width_o="1920" height_o="1080" data-src="https://freight.cargo.site/t/original/i/80cdfbd2abf20e8b28bb8371ef12357fcd311220f761ea51f0c3cdfb84e23e8f/Group-2.png" data-mid="242534759" border="0"  src="https://freight.cargo.site/w/1000/i/80cdfbd2abf20e8b28bb8371ef12357fcd311220f761ea51f0c3cdfb84e23e8f/Group-2.png" /&#62;

        
            
                The Last Dinner At Courtyard
                2025
            
            A material case study spanning the full Substance Designer to Painter to Unreal pipeline. Hero assets were modelled and textured from scratch, with procedural material graphs in Substance Designer feeding into a layered material system in UE5.&#38;nbsp;
            Unreal Engine, Maya, Substance Designer, Substance Painter
            
                Material Pipeline
                Hero Asset
                Procedural Material
                Environment Art
            
        
    

    
    
        
&#60;img width="1920" height="1080" width_o="1920" height_o="1080" data-src="https://freight.cargo.site/t/original/i/b7a02d7275c29f210911a86406e9638b5965ec45d7d7582ea4c2c21ff8105841/image-38.png" data-mid="247301700" border="0"  src="https://freight.cargo.site/w/1000/i/b7a02d7275c29f210911a86406e9638b5965ec45d7d7582ea4c2c21ff8105841/image-38.png" /&#62;

        
            
                KohlerLED
                2025
            
            Tech Art Lead on a virtual production XR shoot with LED volume integration. Responsible for pipeline configuration, look development, and on-set real-time optimization to meet broadcast delivery requirements.
            Unreal Engine
            
                VP Pipeline
                LED Volume
                Look Development
            
        
    

    
    
        
&#60;img width="1200" height="675" width_o="1200" height_o="675" data-src="https://freight.cargo.site/t/original/i/0149a515b9fe016ea24e4093407f6ab1bbd04ac0a97b6859393840dd344bd0ee/S25_V721_P1_ShenDanci_ScaffoldedHavanaBuilding_Final_1.gif" data-mid="244733400" border="0"  src="https://freight.cargo.site/w/1000/i/0149a515b9fe016ea24e4093407f6ab1bbd04ac0a97b6859393840dd344bd0ee/S25_V721_P1_ShenDanci_ScaffoldedHavanaBuilding_Final_1.gif" /&#62;

        
            
                Procedural Havana Building
                2025
            
            A modular building in Houdini exposing 20+ parameters for variation across balconies, floor count, facade elements, railings, and arch detail. Designed to accelerate environment art production by enabling rapid iteration without manual remodeling.
            Houdini
            
                HDA
                Procedural Modeling
                Tool Development
            
        
    

    
    
        
&#60;img width="1920" height="1080" width_o="1920" height_o="1080" data-src="https://freight.cargo.site/t/original/i/223a9fb34c1a201b6b5fac069ad500938bc1721159b4439294c13c617fdf6d0a/wearable4.png" data-mid="242534765" border="0"  src="https://freight.cargo.site/w/1000/i/223a9fb34c1a201b6b5fac069ad500938bc1721159b4439294c13c617fdf6d0a/wearable4.png" /&#62;

        
            
                Laika's Journey
                2023
            
            A conceptual piece focused on look development and cinematic camera work. Built in Blender with an emphasis on lighting and expressive camera motion to support narrative delivery.
            Blender, Human Generator, Cinema 4D
            
                Look Development
                Cinematic Camera
                Storytelling
            
        
    

    
    
        
&#60;img width="1920" height="1080" width_o="1920" height_o="1080" data-src="https://freight.cargo.site/t/original/i/56cbeb78282e61826ab46dd74dc770aea850c3ce70da5b2d45484ff213a5034c/-winter_mantis_2.png" data-mid="242534730" border="0"  src="https://freight.cargo.site/w/1000/i/56cbeb78282e61826ab46dd74dc770aea850c3ce70da5b2d45484ff213a5034c/-winter_mantis_2.png" /&#62;

        
            
                Digital Creature
                2022
            
            Creature sculpting and texturing study covering the full Zbrush to Substance Painter workflow, with a focus on surface detail, material definition, and PBR texture output.
            Zbrush, Substance Painter
            
                Creature Art
                Texturing
                PBR Workflow
            
        
    




(function() {
    function initFilters() {
        const filterItems = document.querySelectorAll('.filter-item');
        const portfolioCards = document.querySelectorAll('.portfolio-card');

        if (!filterItems.length) return;

        filterItems.forEach(item =&#62; {
            // 移除旧事件监听器，防止重复绑定
            const newItem = item.cloneNode(true);
            item.parentNode.replaceChild(newItem, item);
        });

        // 重新获取元素（因为上面替换了）
        document.querySelectorAll('.filter-item').forEach(item =&#62; {
            item.addEventListener('click', function(e) {
                e.preventDefault();
                const filter = this.getAttribute('data-filter');

                document.querySelectorAll('.filter-item').forEach(f =&#62; f.classList.remove('active'));
                this.classList.add('active');

                document.querySelectorAll('.portfolio-card').forEach(card =&#62; {
                    const categories = card.getAttribute('data-categories') &#124;&#124; '';
                    const show = filter === 'all' &#124;&#124; categories.split(',').some(cat =&#62; cat.trim() === filter);

                    if (show) {
                        card.setAttribute('data-hidden', 'false');
                        card.style.visibility = 'visible';
                        card.style.position = '';
                    } else {
                        card.setAttribute('data-hidden', 'true');
                        setTimeout(() =&#62; {
                            if (card.getAttribute('data-hidden') === 'true') {
                                card.style.visibility = 'hidden';
                                card.style.position = 'absolute';
                            }
                        }, 450);
                    }
                });
            });
        });
    }

    // 初始化
    initFilters();

    // Cargo SPA 导航后重新初始化
    if (window.Cargo &#38;&#38; window.Cargo.Event) {
        Cargo.Event.on('page_change_complete', initFilters);
    }

    // 备用方案：监听 popstate 和 hashchange
    window.addEventListener('popstate', function() {
        setTimeout(initFilters, 100);
    });
})();


</description>
		
	</item>
		
	</channel>
</rss>