Because you are operating on the same canvas. And the same canvas is listened to. You need to separate what is to be moved/listened to separately, e.g. on hover.
function TwoObj() {
const [isHovered, setIsHovered] = useState(false);
return (
<>
<OrbitControls enabled={!isHovered} makeDefault />
<ambientLight intensity={0.5} />
<directionalLight position={[5, 5, 5]} intensity={1} />
<mesh position={[-2.5, 0, 0]}>
<boxGeometry args={[1, 1, 1]} />
<meshStandardMaterial color="red" />
</mesh>
<mesh
position={[1, 0, 0]}
onPointerOver={(e) => {
e.stopPropagation();
setIsHovered(true);
}}
onPointerOut={() => setIsHovered(false)}
>
<planeGeometry args={[3, 3]} />
<meshStandardMaterial side={2}>
<RenderTexture attach="map" frames={Infinity}>
<color attach="background" args={["#6fff00"]} />
<ambientLight intensity={0.5} />
<directionalLight position={[10, 10, 5]} intensity={1.5} />
<PerspectiveCamera makeDefault position={[0, 0, 5]} />
<OrbitControls enabled={isHovered} makeDefault />
<mesh>
<torusKnotGeometry args={[1, 0.3, 100, 16]} />
<meshStandardMaterial color="blue" />
</mesh>
</RenderTexture>
</meshStandardMaterial>
</mesh>
</>
);
}
This maybe will be helpfull as well: