Getting accurate BufferGeometry position attributes after displacementMap applied to MeshStandardMaterial

Hi all. I’m applying a displacementMap to a material which is applied to a glb model of type BufferGeometry. I’d like to add other objects to the vertices positions of the model, but I can only seem to get pre-displaced data from the geometry attributes position via Vector3.fromBufferGeometry.

I’ve tried updating matrix world after applying the displacementMap. I’m not collecting the geometry attributes position until after the texture has loaded and been applied, and still I’m only able to get pre-displaced vertices positions.

I have searched here and SO, but can’t seem to find any pointers. Any help would be appreciated

displacementMap displaces the vertices in the vertex shader when rendering, so accessing in js will always give the raw value.
You can displace the vertices manually by getting the normal and UV coordinate for the vertex, then the value in displacement map for that UV and adding it to the vertex position along the normal like
position += normal * ( displacementSample * displacementScale + displacementBias );