# Can OrbitControls rotate around a given point?

**URL:** <https://discourse.threejs.org/t/can-orbitcontrols-rotate-around-a-given-point/52800>\
**Category:** Questions\
**Tags:** orbitcontrols\
**Created:** [June 14, 2023, 8:53am UTC](https://discourse.threejs.org/t/can-orbitcontrols-rotate-around-a-given-point/52800 "2023-06-14T08:53:55Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Innovgame](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/innovgame/32/36656_2.png) [@Innovgame](https://discourse.threejs.org/u/Innovgame)\
**Post date:** [June 14, 2023, 8:53am UTC](https://discourse.threejs.org/t/can-orbitcontrols-rotate-around-a-given-point/52800/1 "2023-06-14T08:53:55Z")

</div>

Can OrbitControls achieve the following effect?

At the beginning, it rotates around the center point of the model. Later, I want to change the center of rotation, such as rotating based on the intersection between the mouse and the model.

**1.** Model centered at (0, 0, 0). Camera looking at (0, 0, 0).  
[![model-center](https://user-images.githubusercontent.com/16842594/93687178-b3123580-fa89-11ea-8441-036bc23666b7.png)](https://user-images.githubusercontent.com/16842594/93687178-b3123580-fa89-11ea-8441-036bc23666b7.png)

**2.** Camera orbits around (0, 0, 0).  
[![around-center](https://user-images.githubusercontent.com/16842594/93687087-ff10aa80-fa88-11ea-9b63-1c0b8053ef46.gif)](https://user-images.githubusercontent.com/16842594/93687087-ff10aa80-fa88-11ea-9b63-1c0b8053ef46.gif)

**3.** User clicks a part of the model, i.e. finger (in green). Camera _does not move_ … still looking at (0, 0, 0).  
[![model-finger](https://user-images.githubusercontent.com/16842594/93687160-90801c80-fa89-11ea-8bad-cc0bbf71d800.png)](https://user-images.githubusercontent.com/16842594/93687160-90801c80-fa89-11ea-8bad-cc0bbf71d800.png)

**4.** Camera now orbits around a different point, i.e. finger’s centerpoint.  
[![around-finger](https://user-images.githubusercontent.com/16842594/93687088-ff10aa80-fa88-11ea-84d6-2fdde004c29e.gif)](https://user-images.githubusercontent.com/16842594/93687088-ff10aa80-fa88-11ea-84d6-2fdde004c29e.gif)

**5.** Model after trucking camera.  
[![model-truck](https://user-images.githubusercontent.com/16842594/93687673-67fa2180-fa8d-11ea-90ee-b17c39f93c8a.png)](https://user-images.githubusercontent.com/16842594/93687673-67fa2180-fa8d-11ea-90ee-b17c39f93c8a.png)

**6.** Camera still orbits around the finger’s centerpoint.  
[![around-finger-truck](https://user-images.githubusercontent.com/16842594/93687676-6f212f80-fa8d-11ea-8584-82b524fa8c8d.gif)](https://user-images.githubusercontent.com/16842594/93687676-6f212f80-fa8d-11ea-8584-82b524fa8c8d.gif)

---

<div class="post-metadata">

**Author:** ![mjurczyk](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/mjurczyk/32/10995_2.png) [@mjurczyk](https://discourse.threejs.org/u/mjurczyk)\
**Post date:** [June 14, 2023, 10:20am UTC](https://discourse.threejs.org/t/can-orbitcontrols-rotate-around-a-given-point/52800/2 "2023-06-14T10:20:56Z")

</div>

99% sure that the built-in OrbitControls have look at the point they orbit around (they automatically point at the current target on each frame.)

---

<div class="post-metadata">

**Author:** ![drcmda](https://avatars.discourse-cdn.com/v4/letter/d/91b2a8/32.png) [@drcmda](https://discourse.threejs.org/u/drcmda)\
**Post date:** [June 14, 2023, 10:51am UTC](https://discourse.threejs.org/t/can-orbitcontrols-rotate-around-a-given-point/52800/3 "2023-06-14T10:51:35Z")

</div>

try [GitHub - yomotsu/camera-controls: A camera control for three.js, similar to THREE.OrbitControls yet supports smooth transitions and more features.](https://github.com/yomotsu/camera-controls) it is very easy and fluid to do it there. i don’t think OC can do that without turmoil.

these are react demos using it but it’s also just using the vanilla lib (double click a shape):

> **[Portal shapes - CodeSandbox](https://codesandbox.io/s/portal-shapes-8j36ok)**
>
> Portal shapes by drcmda using @pmndrs/branding, @react-three/cannon, @react-three/drei, @react-three/fiber, @react-three/rapier, @types/three, r3f-perf, react, react-dom

the api call is just this: controls.fitToBox(targetVec), you can also setTarget and setLookat, all of these methods can transition with animation.

---

<div class="post-metadata">

**Author:** ![Innovgame](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/innovgame/32/36656_2.png) [@Innovgame](https://discourse.threejs.org/u/Innovgame)\
**Post date:** [June 15, 2023, 2:12am UTC](https://discourse.threejs.org/t/can-orbitcontrols-rotate-around-a-given-point/52800/4 "2023-06-15T02:12:10Z")

</div>

@drcmda Thank you for your reply. camera-controls is a good library. I previously used the setOrbitPoint method from camera-controls to achieve the functionality mentioned above. However, there was a strange bug when using it together with dollyToCursor. I don’t understand the mathematical logic behind camera controllers, so I couldn’t solve the problem. I could only seek how OrbitControls can achieve the corresponding functionality. [https://github.com/yomotsu/camera-controls/issues/424)](https://github.com/yomotsu/camera-controls/issues/424)

---

<div class="post-metadata">

**Author:** ![Innovgame](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/innovgame/32/36656_2.png) [@Innovgame](https://discourse.threejs.org/u/Innovgame)\
**Post date:** [June 15, 2023, 2:24am UTC](https://discourse.threejs.org/t/can-orbitcontrols-rotate-around-a-given-point/52800/5 "2023-06-15T02:24:25Z")

</div>

Thank you for your reply. So far, I have not found a way to modify the rotation center in OrbitControls.

---

<div class="post-metadata">

**Author:** ![alankalb](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/alankalb/32/69391_2.png) [@alankalb](https://discourse.threejs.org/u/alankalb)\
**Post date:** [May 28, 2026, 11:20pm UTC](https://discourse.threejs.org/t/can-orbitcontrols-rotate-around-a-given-point/52800/6 "2026-05-28T23:20:43Z")

</div>

I had similar issues with OrbitControls and the Camera Controls library. I was not able to get either to work so I made my own. It allows for dolly/zoom to cursor with a fixed orbit/pivot point. The orbit point can be updated programmatically by selecting an object. I have an example that does what I think you are asking for.

[Pivot Picking Example](https://alankalb.github.io/cad-camera-controls/pivot.html)  
[npm package](https://www.npmjs.com/package/cad-camera-controls)
