3d打印
焦卫峰

1
2
3
4
5
6

新建目录

发布时间:2020-08-22 20:53   发布人:焦卫峰   浏览次数:411

4.Unity中浏览360全景图

1.全景图导入项目中,设置属性如下:

Texture Type:Default

Texture Shape:Cube

此选项将纹理定义为立方体贴图。例如,可将其用于天空盒或反射探针。

Mapping:Latitude Longitude (Cylindrical)

将纹理映射到 2D 纬度/经度表示形式。

Wrap Mode:Clamp

 

2.创建材质,材质类型为Skybox/Cubemap

点选Cubemap(HDR),选择贴图

 

3. Window/Rendering/Lighting Settings 将刚刚创建的Material给Skybox

4.通过调节Camera的Rotation X、Rotation Y和Filed of View来观看360全景图。

5.鼠标控制相机

public class NewBehaviourScript : MonoBehaviour
{
    public float speedX=5f;
    public float speedY=5f;
    public float speedZoom=30f;
 
    float rotateX,rotateY;
    Camera camera;
    float fov;
    void Start()
    { 
        rotateX = transform.eulerAngles.x;
        rotateY = transform.eulerAngles.y;
        camera = GetComponent<Camera>();
        fov = camera.fieldOfView;
    }    
    void Update()
    {
        if(Input.GetMouseButtonDown(0)){
            rotateX = transform.eulerAngles.x;
            rotateY = transform.eulerAngles.y;
        }
        if(Input.GetMouseButton(0)){
            rotateX  = Input.GetAxis("Mouse Y")*speedX;
            rotateY  = Input.GetAxis("Mouse X")*speedY;
            rotateX = ClampAngles(rotateX,-50,50);
            rotateY = ClampAngles(rotateY,-360,360);        
            this.transform.eulerAngles =new Vector3(rotateX,rotateY,0);
        }
        fov -= Input.GetAxis("Mouse ScrollWheel")*speedZoom;
        fov = Mathf.Clamp(fov,20,100);
        camera.fieldOfView = fov;    
    }
    float ClampAngles(float angle,float min,float max){
        if (angle < -360){
            angle  = 360;
        }
        if( angle > 360){
            angle -= 360;
        }
        return Mathf.Clamp(angle,min,max);
    }
}


 

思考:

如何实现按住自动旋转的效果?

 

尝试使用Input.mousePosition记录鼠标按下的坐标和鼠标按住的坐标,求出坐标的差,然后使用Rotate函数在x,y轴上进行旋转。这时可以实现按住自动旋转的效果,但是会出现Z轴旋转的情况,如何解决?

6.切换全景图片

public Texture[]textures;
public Material mat;
    void Start()
    { 
        mat.SetTexture("_Tex",textures[1]);
}


 

使用拖动赋值,对材质、贴图进行赋值。

使用Material类中的SetTexture方法切换贴图。

 

思考:

添加景点介绍、交互,实现点击图片切换360全景场景