how to modify camera rotation with trackball controls - camera

how would you manually alter the camera rotation with TrackballControls applied to the camera? because it resets the rotation after you do the camera.rotateX(...)
i have found this ticket on the three js issuelist but the person was told to ask on stackoverflow and i see no mention of the problem on stack overflow anywhere

Would putting the camera into a container (THREE.Object3D) instead of a scene directly do the trick for you? You could do container.rotateX(...) and it wouldn't be reset by trackball controls. They would be applied within the container.

Related

No keyframes are visible but the object still moves

I'm using Blender 2.8 and I just have 2 objects: hand and gun and I want to create animations for them. So, for instance, I want to create a simple firing animation. What I do:
1. I create animation for gun
2. I create animation for hand
But if I switch somehow incorrectly I "lose" the first animation I've created. I tried creating fake users and stuff. I just don't get why I select the armature for which I've just created the animation, it plays, but there are no keyframes.
Here's the vid, here's the file.
Ask me questions if you have any.
The movement may be cached in Blender, you may need to reset the movement cache.
Alternatively, you should look at both the Track Controller and Dopesheet(action editor) - the animation may be stored in both.
The movement could be related to parenting ( to an object that is moving )
The movement could also be caused by physics simulation of a rigid body.
Hopefully with the help of the above, you find the problem.
I had the same problem. In the Animation mode (horizontal tabs across the top of the window), click on the object to animate.
The keyframes will appear.
If the object is not selected, the keyframes disappear.
Just leaving this here so that nobody spends 30 minutes trying to work this out, like i just did.

how to set frustum inortographic camera THREEJS

First to thank for the great support you allways have provided me.
I have modified the SelectionBox and SelectionHelper modules published in threejs in order to work with instances.
The point is that if I try to use it with an orthographic camera the selection is not accurate. It works properly with a perspective camera.
Note:
In order to enable|disable area picking just double click left mouse button.
In order to test the code with an orthographic camera just comment perspective camera initialization and uncomment orthographic camera initialization in init function.
Here my fiddle:
enter code herehttps://jsfiddle.net/6f3gx8hb/
In perspective camera it works fine but not in ortographic camera
Best regards

How can I stop the output from Snap SVG Animator from looping?

I've used Animate CC with the Snap SVG Animator plugin to generate an animated SVG, but can't seem to find anything in the docs to stop the animation from automatically playing and automatically looping.
I would have thought these would have been options that would be passed into the SVGAnim(json, width, height, fps) object.
Currently I can somewhat solve the issue of autoplaying by calling stop() on the root movie clip located on the instance of SVGAnim straight after initialising the object.
For example: _anim.mc.stop()
Letting it start in the first place and then having to stop it doesn't feel like best practice.

Is there a way I can let the camera zoom but not rotate?

Is there a way I can let the SceneKit's camera zoom but not rotate? And how can I delimitate the maximum and minimum zoom the user can do with the camera?
It depends what you mean by zoom – if you mean to do the same thing as 'zooming' a camera lens, you want to modify the yFov and xFov (field of view) attributes of the SCNCamera object. The camera stays in the exact same location, but changes its field of view like a zoom lens.
I cannot see how you can rotate the camera while zooming it – I’d need to see more context of where you’re using the camera. If you don’t touch the SCNNode the camera is attached to, you can’t possibly rotate it.
You're talking about user camera movement with allowsCameraControl, right? I don't think that's really meant to be the basis for a sophisticated user camera movement scheme, more of a simple debugging aid. If you really want fine control over how the user can move the camera, you're best served by creating your own camera node and moving it / changing its properties in response to whatever user input you want to handle (gesture recognizers, game controllers, etc).
I suppose you might be able to constrain the automatic user camera by implementing a scene renderer delegate willRenderScene method. You'd have to get the current pointOfView node, check its position and camera parameters, and change them if they're outside whatever bounds you want. But A) I'm not sure this would work, and B) it's probably not a great idea — it's sort of like messing with the internal view hierarchy of a system control class.

Three.js 3rd person camera

I'm trying to create a 3rd person camera view in three.js
I'm using the THREE.FirstPersonControls(); on my camera. Then setting the rotation and positions of my "player" objects to be the same as the camera with some offsets.
This does not seem to work.
What i'm more wondering is if I should be adding my FirstPersonControls to the camera and then rendering the "player" infront of it. Or adding the controls to the player then making the camera always point at the back of the player?
EDIT:
I've tried setting the player object to be a sub object of the camera using camera.add(player);
but moving the camera around is not moving the player. I thought adding an child element would mean they move together?
EDIT 2:
I took another approach of adding both the camera and the player to a group then adding my 1st person controls to that group... Now both the camera and the player do get rendered. But it's completely thrown off how the first person controls worked. (e.g. looking down goes left etc etc)
Thanks for any help,
James
First of all, the Controls were designed to be controlling a camera, and not an object. And since by default, objects look "up" the z-axis, and cameras look "down" the z-axis, it is unlikely that the Controls will work as expected when applied to something other than a camera.
Secondly, the Controls are part of the examples, and not the library, so they are not officially supported. You are free to hack away at them.
One way to achieve what you want is to make the camera a child of your player. Something like this:
player.add( camera );
camera.position.set( 0, 50, 100 );
You may, in your render loop, need to set:
camera.lookAt( player.position );
Then you want to control the player with the mouse or keyboard. Your best bet is to write your own controller to do that. There are plenty of examples on the net.