# Value Clip source not loading in

**URL:** <https://forum.aousd.org/t/value-clip-source-not-loading-in/2843>\
**Category:** USD\
**Tags:** animation, composition\
**Created:** [January 29, 2026, 8:35pm UTC](https://forum.aousd.org/t/value-clip-source-not-loading-in/2843 "2026-01-29T20:35:10Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![stout](https://avatars.discourse-cdn.com/v4/letter/s/f0a364/32.png) [@stout](https://forum.aousd.org/u/stout)\
**Post date:** [January 29, 2026, 8:35pm UTC](https://forum.aousd.org/t/value-clip-source-not-loading-in/2843/1 "2026-01-29T20:35:10Z")

</div>

I am working on a tool that generates USD data to be used in animation software, mainly as sets. I’m currently working on adding in some idle background animations to some objects.

The basic setup is that I have the file containing all of the prims, including the prims for animated objects (but with just default values). I then have an \_anim.usd file which contains the prims for those animated objects which contain timesampled data, and I have an accompanying \_anim.manifest.usd file as the manifest. I am using a single usd file that contains all timesampled data, rather than individual usd files for each frame, out of simplicity.

In the main file, I then set up the clip on the prims for animated objects. Having read the documentation, it should work, but it’s not loading in the \_anim.usd file.

I’ve tried loading it in four different applications and none load in the animation. In Houdini, I ended up adding in a value clip node and copying over the clip data, and then it works. Comparing the metadata for the animated prims between with and without the value clip node, they are identical. Yet, without the value clip node in Houdini, it’s just not loading in the animation file.

I opened up the file in usdview with debug flags turned on, and I can see that it’s trying to look up the \_anim.usd file in the SdfLayerRegistry, so it is seeing it somewhere, just not actually loading it in.

Here’s what the prim for an animated object looks like as exported out by my application (geometry data is empty, because the actual geometry is stored in the timesampled \_anim.usd file):

```auto
    def Mesh "hytale_Bench_Alchemy_65_0_0_0__0"(
        clips = {

            dictionary default = {

                asset[] assetPaths = [@C:/Users/me/OneDrive/Documenten/_SOFTWARE_/MCWorldExporter/MCWorldExporter/test22_chunks/region_1_chunk_1_1_anim.usd@]
                asset manifestAssetPath = @C:/Users/me/OneDrive/Documenten/_SOFTWARE_/MCWorldExporter/MCWorldExporter/test22_chunks/region_1_chunk_1_1_anim.manifest.usd@
                double2[] active = [(0,0)]
                string primPath = "/hytale_Bench_Alchemy_65_0_0_0_"
                double2[] times = [(0.0,0.0),(31.0,31.0)]
            }

        }
        kind = "subcomponent"
        apiSchemas = ["MaterialBindingAPI"]
    )

    {
        double3 xformOp:translate = (-96.0,0.0,-96.0)
        uniform token[] xformOpOrder = ["xformOp:translate"]
        rel material:binding = </chunk/materials.MAT_hytale_Blocks_Benches_Alchemy_Texture>
        uniform bool doubleSided = false
        int primvars:ri:attributes:Ri:Sides = 1
        uniform token subdivisionScheme = "none"
        point3f[] points = []
        int[] faceVertexIndices = []
        int[] faceVertexCounts = []
        texCoord2f[] primvars:st = [](
            interpolation = "faceVarying"
        )

        int[] primvars:st:indices = []
        normal3f[] primvars:normals = [](
            interpolation = "faceVarying"
        )

        int[] primvars:normals:indices = []
        color3f[] primvars:displayColor = [(0.042987008,0.042987008,0.024222942)]
    }

```

And this is the layer data that the value clip node in Houdini is composing on top:

```auto
#sdf 1.4.32
(
    framesPerSecond = 24
    metersPerUnit = 1
    timeCodesPerSecond = 24
)

def HoudiniLayerInfo "HoudiniLayerInfo" (
    customData = {
        int HoudiniCreatorNode = 14
        int[] HoudiniEditorNodes = [14, 15]
    }
)
{
}

def "world" (
    customData = {
        int[] HoudiniPrimEditorNodes = [14]
    }
    prepend references = @C:/Users/me/OneDrive/Documenten/_SOFTWARE_/MCWorldExporter/MCWorldExporter/test22.usd@
)
{
    over "foreground"
    {
        over "region_1_chunk_1_1"
        {
            over "hytale_Bench_Alchemy_65_0_0_0__0" (
                clips = {
                    dictionary default = {
                        double2[] active = [(0, 0)]
                        asset[] assetPaths = [@C:/Users/me/OneDrive/Documenten/_SOFTWARE_/MCWorldExporter/MCWorldExporter/test22_chunks/region_1_chunk_1_1_anim.usd@]
                        string primPath = "/hytale_Bench_Alchemy_65_0_0_0_"
                        double2[] times = [(0, 0), (31, 31)]
                    }
                }
            )
            {
            }
        }
    }
}

```

I cannot see nor understand what the value clip node in Houdini is doing that causes it to suddenly load in the \_anim.usd file, but the original USD data that should be identical doesn’t load in the \_anim.usd file. Does anybody have an idea what I might be doing wrong when writing the USD data out of my tool?

Also, as a side note, the tool is written in Java and I didn’t want to have to set up bindings with the USD libraries, so I have written my own very basic usda file writer. That’s why the formatting is a bit off on the usd data outputted by my tool, but it is still validly formatted usda data, so that shouldn’t be the issue.

---

<div class="post-metadata">

**Author:** ![stout](https://avatars.discourse-cdn.com/v4/letter/s/f0a364/32.png) [@stout](https://forum.aousd.org/u/stout)\
**Post date:** [January 30, 2026, 10:50am UTC](https://forum.aousd.org/t/value-clip-source-not-loading-in/2843/2 "2026-01-30T10:50:04Z")

</div>

I have figured it out! Opinions from clip sets are weaker than opinions on the prim itself, and since I was authoring the default values on the same layer as specifying the clip sets, I was accidentally overriding the timesampled values from the clip sets with the default values. So, I’ve made it so that it writes out the default values into a separate file, which is then referenced in on the prim. That way, the opinions from the clip sets are stronger than the opinions from the default values

---

<div class="post-metadata">

**Author:** ![spiff](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.aousd.org/spiff/32/22_2.png) [@spiff](https://forum.aousd.org/u/spiff)\
**Post date:** [February 3, 2026, 2:57am UTC](https://forum.aousd.org/t/value-clip-source-not-loading-in/2843/3 "2026-02-03T02:57:46Z")

</div>

That’s right! We think of value clips as conceptually a **sublayer** of the layer in which they are “anchored” (i.e. the layer in which the key value clip metadata is defined). So you don’t _need_ to reference in the defaults - you only need to put them in a weaker sublayer in your layerStack. BUt it’s also fine to reference them in 🙂
