# Instancing a point instancer seems to neglect xform transforms on parent prim

**URL:** <https://forum.aousd.org/t/instancing-a-point-instancer-seems-to-neglect-xform-transforms-on-parent-prim/2695>\
**Category:** USD\
**Tags:** beginner\
**Created:** [September 17, 2025, 6:20am UTC](https://forum.aousd.org/t/instancing-a-point-instancer-seems-to-neglect-xform-transforms-on-parent-prim/2695 "2025-09-17T06:20:01Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![josephfernando](https://avatars.discourse-cdn.com/v4/letter/j/82dd89/32.png) [@josephfernando](https://forum.aousd.org/u/josephfernando)\
**Post date:** [September 17, 2025, 6:20am UTC](https://forum.aousd.org/t/instancing-a-point-instancer-seems-to-neglect-xform-transforms-on-parent-prim/2695/1 "2025-09-17T06:20:01Z")

</div>

Hey USD gurus!

I’ve got a simple point instancer which has a parent xform with a transform like this :

`instancer.usda`

```auto
#usda 1.0
def Xform "root"
{
    def Xform "placement" (
    )
    {
        # Transform 5 units on Y axis
        matrix4d xformOp:transform:transform3 = ( (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 5, 0, 1) )
        uniform token[] xformOpOrder = ["xformOp:transform:transform3"]

        def PointInstancer "instancer" (
            kind = "group"
        )
        {
            float3[] extent = [(-1, -1, -1), (4, 1, 1)]
            
            int64[] invisibleIds = []
            quath[] orientations = [(1, 0, 0, 0), (1, 0, 0, 0)]
            point3f[] positions = [(0, 0, 0), (3, 0, 0)]
            int[] protoIndices = [0, 0]
            rel prototypes = </root/placement/instancer/Prototypes/sphere1>

            def Scope "Prototypes" (
                kind = "group"
            )
            {
                def Sphere "sphere1" (
                )
                {
                    float3[] extent = [(-1, -1, -1), (1, 1, 1)]
                    double radius = 1
                    matrix4d xformOp:transform = ( (1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1) )
                    uniform token[] xformOpOrder = ["xformOp:transform"]
                }
            }
        }
    }
}

```

And a simple reference which does native instancing by turning on `instanceable` flag  
`references.usda`

```auto
#usda 1.0
def Xform "root"
{
    def "newPlacement" (
		# Turning on instancing does not use the xform on /root/placement 
		# While turning off instancing does
		instanceable = true
        prepend references = @instancer.usda@</root>
    )
    {
    }
}

```

On doing this, it seems to loose the xform on /root/placement prim and the point instancer is at the wrong place. If I disable instanceable flag it seems to be transformed as expected.

I tested the same having only a sphere under `/root/placement` in the instancer.usda file and it seems to transform as expected when native instancing. This issue seems to happen when with point instancer. Is this a bug / feature of instancing or am I doing something wrong here?

 ![noninstanceable](https://us1.discourse-cdn.com/flex016/uploads/aousd/original/2X/b/b860a50705f6d577bc9e6cfdb1905ce0f7a5120e.png)

 ![instanceable](https://us1.discourse-cdn.com/flex016/uploads/aousd/original/2X/9/9a0930e22a21e2f8ecb217bda2ba87ac5f50e2f4.png)

---

<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:** [September 17, 2025, 8:57pm UTC](https://forum.aousd.org/t/instancing-a-point-instancer-seems-to-neglect-xform-transforms-on-parent-prim/2695/2 "2025-09-17T20:57:46Z")

</div>

Hey @josephfernando , the interplay of nested native instancing and point-instancing has consistently been one of the most complex aspects of our imaging system, and it looks like you’ve hit a not-encountered-before boundary condition that we’re not handling properly.

**However** the way we handle instancing was fundamentally changed for the new “Hydra 2.0” rewrite. If you have access to 25.08 (or a dev branch build), could you try running with the `USDIMAGINGGL_ENGINE_ENABLE_SCENE_INDEX` env var set to 1, please, and see if that fixes the problem? Hydra 2.0 will become the default very soon.

---

<div class="post-metadata">

**Author:** ![josephfernando](https://avatars.discourse-cdn.com/v4/letter/j/82dd89/32.png) [@josephfernando](https://forum.aousd.org/u/josephfernando)\
**Post date:** [September 21, 2025, 11:31pm UTC](https://forum.aousd.org/t/instancing-a-point-instancer-seems-to-neglect-xform-transforms-on-parent-prim/2695/3 "2025-09-21T23:31:05Z")

</div>

Hi @spiff ! Thank you for the reply, I can confirm that it works in Hydra 2. Infact I just tried in USD 24.3 and it seems to work as intended even there. Seems like it got fixed somewhere between 22.5 and 24.3  
Thanks for you quick response again 🙂
