var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.set(0, 5, 10);
camera.lookAt(scene.position);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
scene.add(new THREE.GridHelper(10, 10));
var parentObj = new THREE.Mesh(new THREE.SphereBufferGeometry(1, 16, 8), new THREE.MeshBasicMaterial({
color: "red",
wireframe: true
}));
scene.add(parentObj);
var childObj = new THREE.Mesh(new THREE.SphereBufferGeometry(1, 16, 8), new THREE.MeshBasicMaterial({
color: "blue",
wireframe: true
}));
childObj.position.set(2, 0, 0);
parentObj.add(childObj);
var clock = new THREE.Clock();
var time = 0;
var scale = 1;
var invScale = 1;
renderer.setAnimationLoop(() => {
time = clock.getElapsedTime();
scale = 1 + Math.sin(time) * 0.5 + 0.5;
invScale = 1 / scale;
parentObj.scale.setScalar(scale);
childObj.scale.setScalar(invScale);
renderer.render(scene, camera)
});
body {
overflow: hidden;
margin: 0;
}
<script src="https://threejs.org/build/three.min.js"></script>