Hololens动态显示图片

显示图片相关的控件有两个,一个是Image另一个是raw image.都是二维的,自带Canvas.

前者用的是sprite格式,即需要把常见的图片Jpg,png等在unity中转成此格式才行,

如下图,把常见的图片operation的属性texture type改选成sprite即可变成sprite格式的图片,此时原图片右侧会多一个三角标志,点击能展开。sprite格式都是这样的,带三角三角标志,点击能展开。

这会给网络播放带来困难,因此我们放弃了前者,用raw image. raw image就是我们常用的图片格式如Jpg,png以及sprite格式的也可以直接用的,直接拖动到texture上或者代码控制赋值即可,给动态控制或网络视频传输带来便利。我们来看一下一般的图片是什么样的,如下图:

 接下来进入正题,建立两个raw image,分别显示不同的图片,update函数中每帧更新图片。

1.MRTK加入和环境设置(见官网)

2.新建raw image(在UI下),系统自动带入Canvas,设置Canvas的render mode 为world space,Pos Z设为0.6,其它位置比例不变,如下图。加入component, radial view(参数默认)以便canvas中的image随着视野移动。

 加入picture update.cs代码如下,所有动态变化在这里实现,把三个准备好的图片,一个jpg,两个sprite拖入到变量窗口。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class PictureUpdate : MonoBehaviour
{
    public Texture2D picture1;
    public Texture2D picture2;
    public Texture2D picture3;
    int i;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        i++;
        if (i % 2 == 0)
        {
            GameObject.Find("Canvas/RawImageL").GetComponent<RawImage>().texture = picture1;
            GameObject.Find("Canvas/RawImageR").GetComponent<RawImage>().texture = picture1;
        }
        else
        {
            GameObject.Find("Canvas/RawImageL").GetComponent<RawImage>().texture = picture2;
            GameObject.Find("Canvas/RawImageR").GetComponent<RawImage>().texture = picture3;
        }

        if (i > 10) i = 0;
    }
}

3. raw image的设置,position, width,height和scale改一下,其它不动。RawImageL如下

 RawImageR如下

 大功告成。 RawImageVideo是播放video用的,也是一个raw image,也已经成功,详见下篇hololens 通过RawImage播放mp4格式的video。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值