Unity 翻书效果

发表于2017-08-29
评论0 1.4k浏览

想免费获取内部独家PPT资料库?观看行业大牛直播?点击加入腾讯游戏学院游戏程序行业精英群

711501594

根据这篇论文实现翻书效果,想知道翻书效果实现方法的同学可以认真看看。

重点理解: 
- 论文中锥形与放置面的关系 
- 母线偏离中轴线的角度 
- 锥形横截面上的旋转角度

实现:如下

PageCurl.cs

using UnityEngine;
using System.Collections;
using System;
[Serializable, RequireComponent(typeof(MeshFilter))]
public class PageCurl : MonoBehaviour 
{   
    //点坐标集合
    Vector3[] v0;
    //锥顶的位置
    public float Y;
    Vector3 apex;
    //母线偏离中轴线的角度
    public float theta;
    //在锥形横截面上的旋转角度
    public float rho;
    void Init()
    {
        theta = 0;
        apex = new Vector3(0f, Y, 0f);
    }
    public PageCurl()
    {
        Init();
    }
    void Awake()
    {
        Mesh mesh = GetComponent().mesh;
        v0 = mesh.vertices;
    }
    public Vector3 curlTurn(Vector3 p)
    {
        float R = Mathf.Sqrt(Mathf.Pow(p.x, 2)   Mathf.Pow(p.y - apex.y, 2));
        float r = R * Mathf.Sin(theta);
        float bta = Mathf.Asin(p.x / R) / Mathf.Sin(theta);
        float x = r * Mathf.Sin(bta);
        float y = R   apex.y - r * (1 - Mathf.Cos(bta)) * Mathf.Sin(theta);
        float z = r * (1 - Mathf.Cos(bta)) * Mathf.Cos(theta);
        return new Vector3(x , y, z );
    }
    public void LateUpdate()
    {
        apex = new Vector3(0, Y, 0);
        if (v0.Length > 0)
        {
            renderMesh();
        }
    }
    public void renderMesh()
    {
        Vector3[] a = new Vector3[v0.Length];
        for (int i = 0; i < v0.Length; i  )
        {
            a[i] = curlTurn(v0[i]);
        }
        Mesh mesh = GetComponent().mesh;
        mesh.vertices = a;
        mesh.RecalculateNormals();
        transform.localEulerAngles = new Vector3(0, rho, 0);
    }
}

===============分割线=============================================

2016.02.26 今天偶然看到Github上一个翻页的实现,非常好。贴出来

Github : Unity3DBookPageCurl

简介: 
Unity3D - Book Page Curl Asset is a simple unity3d package for creating page curl effect . 
Download the asset from unity3d asset store:https://www.assetstore.unity3d.com/#!… 
You can find the project on github here: 
https://github.com/Dandarawy/Unity3DB

This project is based on this article: 
http://rbarraza.com/html5-canvas-page

原文链接

著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

游戏学院公众号二维码
腾讯游戏学院
微信公众号

提供更专业的游戏知识学习平台