相机随物体移动,代码取自以下两个例子。相机随着物体移动,物体沿着一定的轨迹运动。Trackmovementexample1:相机沿直线跟随物体varcanvas=document.getElementById('carCanvas');varengine=newBABYLON.Engine(canvas,true);//这创建了一个基本的BabylonScene对象(非-mesh)varscene=newBABYLON.Scene(engine);//创建并初始定位一个跟随相机varcamera=newBABYLON.FollowCamera("FollowCam",newBABYLON.Vector3(0,10,-10),scene);//相机的目标距离targetcamera.radius=30;//相机在局部原点(中心)上方的目标高度targetcamera.heightOffset=10;//相机围绕局部原点(中心)旋转的目标targetinxyplanecamera.rotationOffset=0;//相机从当前位置移动到目标位置的加速度camera.cameraAcceleration=0.005//停止加速的速度camera.maxCameraSpeed=10//camera.target设置在目标的创建//这将相机附加到目标ecanvascamera.attachControl(canvas,true);/****************************************************///lightsvarlight=newBABYLON.HemisphericLight("light1",newBABYLON.Vector3(1,0.5,0),scene);/*----------------------CarBody--------------------*///创建车身并应用材质varcarBody=BABYLON.MeshBuilder.CreateBox("box",{size:5},scene);carBody.position=newBABYLON.Vector3(0,0,0);/*----------------结束车体-------------------*//*--------小路----------------*///创建点数组来描述曲线varpoints=[];varn=450;//点数varr=50;//radiuspoints.push(newBABYLON.Vector3(0,0,0));for(vari=0;i<200;i++){points.push(newBABYLON.Vector3(i,0,0));}for(vari=0;i<200;i++){points.push(newBABYLON.Vector3(200,0,i));}//绘制曲线vartrack=BABYLON.MeshBuilder.CreateLines('track',{points:points},scene);track.color=newBABYLON.Color3(0,0,0);/*---------------结束路径----------------------------*//*-----------地面----------------------------*/varground=BABYLON.MeshBuilder.CreateGround("ground",{width:3*r,height:3*r},scene);/*------------结束地面------------------*//*------------开始时定位和旋转汽车--------*/carBody.position.y=4;carBody.position.z=r;varpath3d=newBABYLON.Path3D(points);varnormals=path3d.getNormals();vartheta=Math.acos(BABYLON.Vector3.Dot(BABYLON.Axis.Z,normals[0]));carBody。rotate(BABYLON.Axis.Y,theta,BABYLON.Space.WORLD);varstartRotation=carBody.rotationQuaternion;/*-----结束位置并在开始时旋转汽车------*//*******为相机设置目标******************/camera.lockedTarget=carBody;/***************************************//*----------------动画循环------------*/vari=0;scene.registerAfterRender(function(){car??Body.position.x=points[i].x;carBody.position.y=points[i].y;carBody。位置.z=点[i].z;我++;////连续循环if(i==450)i=0;if(i==0){car??Body.rotationQuaternion=startRotation;}});/*----------------结束动画循环----------------*/engine.runRenderLoop(function(){scene.render();})示例2:相机跟随物体走曲线varcanvas=document.getElementById('carCanvas');varengine=newBABYLON.Engine(canvas,true);//这创建了一个基本的BabylonSceneobject(non-mesh)varscene=newBABYLON.Scene(engine);//创建并初始定位一个跟随相机varcamera=newBABYLON.FollowCamera("FollowCam",newBABYLON.Vector3(0,10,-10),scene);//相机的目标距离targetcamera.radius=30;//相机的目标高度在targetcamera.heightOffset=10的局部原点(中心)之上;//相机围绕局部的目标旋转origin(center)oftargetinxyplanecamera.rotationOffset=0;//相机从当前位置移动到目标位置的加速度camera.cameraAcceleration=0.005//停止加速的速度camera.maxCameraSpeed=10//camera.target在目标创建后设置//这会将相机附加到canvascamera.attachControl(canvas,true);/****************************************************///lightsvarlight=newBABYLON.HemisphericLight("light1",newBABYLON.Vector3(1,0.5,0),scene);/*----------------车体----------*///创建主体并应用材质varcarBody=BABYLON.MeshBuilder.CreateBox("box",{size:5},scene);carBody.position=newBABYLON.Vector3(0,0,0);/*----------------结束车体---------------*//*------------路径------------*///创建点数组来描述曲线变量点=[];varn=450;//点数varr=50;//radiusfor(vari=0;i
