unity3d仪表模型_unity3d 模型的渲染模型 - CSDN
  • Unity3D仪表仪表

    2020-07-30 23:32:08
    Unity3D仪表仪表
  • unity3d-AircraftSimulator飞行模拟器(.unitypackage)的使用方法

    以下是个人对unity3dAircraftSimulator飞行模拟器包的使用方法的总结,以便自己和大家日后查看。

    一、AircraftSimulator飞行模拟器(.unitypackage)资源效果图:

    二、使用方法:

    将AircraftSimulator的package导入u3d后,在AssetsUnityFS目录有一个名为Getting Started的PDF说明文档,里面说的还算比较详细。大家英语不好没关系,接着往下看!


    在Assets\UnityFS\Prefabs文件下找到Example.prefab文件,拖入场景中,如图:


    打开Window\UnityFS\Configure Input,点击OVERWRITE-Done,如图:




    打开Edit\Project Settings\Input,如图:


    可以看到右边的Inspector里面设置好了,直接打开Scenes下的Example是没有设置的,而且会提示报错,虽然不影响运行,但是飞机是不能操控的,如图:

    最后删掉后来拖进去的飞机即可,原来的飞机就可以运行了。

    飞机操控说明:前后左右:“wsad”;

    起落架抬起和放下:“G”;

    加大油门:长按“2”;

    减小油门:长按“1”;

    飞机起飞:“S”,拉起拉杆即可;‘

    切换视角:“C”;

    点火:“I”;

    顺便说一句,这个飞机模拟器还是比较强大的,里面的仪表盘会根据高度转向等信息转动,而且比较逼真,有从飞机加油-抬升-起飞-收齐起落架等一些列动作,声音等平衡系统相当完善。不过还是要学习别人的技术,不能总是看别人的东西很NB,要拿来转换成自己的东西才是最终目的!

    展开全文
  • 最近在做设备仪表参数参数显示,由于模型摆放位置经常修改,加之要求不能在模型的下面添加东西,显示界面的位置也不得不跟着修改,一来二去就烦了,想了解决办法,现在总结如下: 1、仍然在模型下面新建Panel,然后...

    最近在做设备仪表参数参数显示,由于模型摆放位置经常修改,加之要求不能在模型的下面添加东西,显示界面的位置也不得不跟着修改,一来二去就烦了,想了解决办法,现在总结如下:

    1、仍然在模型下面新建Panel,然后调整Panel到合适位置。

    2、新建一个空的游戏对象,F2修改名字

    3、将模型的Transfrom组件赋值给他。

    4、将Panel拖拽到空的游戏对象下面,

    5、生成预制体,提交。

    6、若下次模型又修改位置了,找到模型,重复第三步。

    Ps:调整Panel位置时候有个小的注意点,显示界面如果和模型的屏幕贴的太近(其实我也不知道是贴得太近还是嵌进去了),在桌面模式看来没有什么问题(所以我当他是贴得太近),但是在VR中看就会有锯齿感,显示的文字会有闪动(如果要科技感的话,好像可以试试,但是感觉还是代码控制闪动靠谱得多),略微调整下,拉出来就ok了。

    转载于:https://www.cnblogs.com/DuYiNan/p/6171023.html

    展开全文
  • [Unity3d]虚拟3D汽车展示项目

    千次阅读 2013-11-07 09:40:30
    今天完善成了虚拟3D汽车展示项目的部分功能,虽然用的汽车模型有点粗糙,但感觉还不错,下面我就贴下源码供初学者学习! 项目展示地址:http://114.92.242.208/aspnet_client/system_web/carshow/dxw2.html,说明:...

    今天完善成了虚拟3D汽车展示项目的部分功能,虽然用的汽车模型有点粗糙,但感觉还不错,下面我就贴下源码供初学者学习!

    项目展示地址:http://114.92.242.208/aspnet_client/system_web/carshow/dxw2.html,说明:浏览器必须要安装unityplayer插件。

    项目操作说明:

    1.鼠标左击可以点击左右车门,控制它的开关,还可以点击前后盖控制打开和关闭。

    2.鼠标滚轮可以缩放,达到一个远近的效果。

    3.按住键盘s键可以显示menu,h键可以隐藏menu菜单。

    源码:

    using UnityEngine;
    using System.Collections;
    
    
    
    
    public class NewBehaviourScript : MonoBehaviour
    {
    
        public GameObject cube;
        public GameObject car;
        public GameObject light;
        Vector2 p1, p2;//用来记录鼠标的位置,以便计算旋转幅度
        Vector3 originalPosition;
        float target = 0;
        public Texture2D redbtnTexture;
    
        private bool bOpenMenu = false; //是否打开功能框
        private Rect myWindow = new Rect(10, 10, 470, 300); //功能选项框架
        public GUISkin customSkin;//自定义皮肤
        private Rect closeButton = new Rect(415, 0, 26, 22);//关闭按钮
        public Texture2D tHero;
        private Rect rHero = new Rect(0, 40, 180, 230); //人物的位置
    
        //图像框
        private Rect stateBox = new Rect(157,50,280,210);
    
        private string[] functionStr ; //功能选项数组
    
        public Texture2D redBtn;
        public Texture2D greenBtn;
        public Texture2D blueBtn;
        public Texture2D orangeBtn;
        public Texture2D whiteBtn;
        public Texture2D blackBtn;
        private Texture2D[] iBtn;
        //iBtn= new Texture2D[6]{redBtn,greenBtn,blueBtn,orangeBtn,whiteBtn,blackBtn};
    
        private Rect[] pBtn = new Rect[6];
    
        //车轮更换
        private bool selectToggleWheel = false;
        //雨刷器
        private bool selectToogleWiper = false;
        //转向灯
        private bool selectToogleLeftTurningLight = false;
        private bool selectToogleRightTurningLight = false;
        //前照灯
        private bool selectToogleFarLight = false;
        private bool selectToogleNearLight = false;
    
    
    
        private GUIContent[] guiCon = new GUIContent[4]; //接受字符串
        public Rect[] strPosition = new Rect[4];
        // 鼠标中间键
        int MouseWheelSensitivity = 5;
        int MouseZoomMin = 18;
        int MouseZoomMax = 90;
        float normalDistance = 32;
        public GameObject doorL;
    
        // Use this for initialization
        void Start()
        {
            iBtn= new Texture2D[6]{redBtn,greenBtn,blueBtn,orangeBtn,whiteBtn,blackBtn};
            originalPosition = transform.position;
            doorL = GameObject.Find("doorL");
            cube = GameObject.Find("Main Camera");
    
            for (int i=0;i<6;i++)
            {
                pBtn[i] =  new Rect(170+i*43, 65,40,30);
            }
            functionStr= new string[4]{"车轮更换","雨刷器","转向灯","前照灯"};
    
            for (int i = 0; i < 4; i++)
            {
                guiCon[i] = new GUIContent(functionStr[i]);
            }
            strPosition[0] = new Rect();
        }
    
        // Update is called once per frame
        void Update()
        {
            //如果为s键则打开弹出框
            if (Input.GetKey(KeyCode.S))
            {
                bOpenMenu = true;
            }
            else if (Input.GetKey(KeyCode.H))
            {
                bOpenMenu = false;
            }
    
            //开门
            //if (target < 20)
            //{
            //    doorL.transform.Rotate(transform.forward, 2);
            //    target = target + 1;
            //}
            
            //旋转
            if (Input.GetMouseButtonDown(0))
            {
                p1 = new Vector2(Input.mousePosition.x, Input.mousePosition.y);//鼠标右键按下时记录鼠标位置p1
            }
            if (Input.GetMouseButton(0))
            {
                p2 = new Vector2(Input.mousePosition.x, Input.mousePosition.y);//鼠标右键拖动时记录鼠标位置p2
                //下面开始旋转,仅在水平方向上进行旋转
                float dx = p2.x - p1.x;
                float dy = (float)0.1*(p2.y - p1.y);
                transform.RotateAround(car.transform.position, Vector3.up, dx * Time.deltaTime);
                //鼠标上下移动
                //transform.Translate(dy*Vector3.up * Time.deltaTime);
                light.transform.RotateAround(car.transform.position, Vector3.up, dx*Time.deltaTime);
            }
    
    
            //鼠标滚轮控制场景大小
            // 如果按住滑轮
            if (Input.GetAxis("Mouse ScrollWheel") > 0)
            {
                Debug.Log(1);
                Debug.Log(Input.GetAxis("Mouse ScrollWheel"));
               
                if (normalDistance >= MouseZoomMin && normalDistance <= MouseZoomMax)
                {
                    normalDistance -= Input.GetAxis("Mouse ScrollWheel") * MouseWheelSensitivity;
                }
    
                if (normalDistance < MouseZoomMin)
                {
                    normalDistance = MouseZoomMin;
                }
                if (normalDistance > MouseZoomMax)
                {
                    normalDistance = MouseZoomMax;
                }
               // transform.Translate(transform.forward * normalDistance);
                transform.camera.fieldOfView = normalDistance;
    
                
            }
    
            //后滚
            else if (Input.GetAxis("Mouse ScrollWheel") < 0)
            {
                Debug.Log(-1);
                if (normalDistance >= MouseZoomMin && normalDistance <= MouseZoomMax)
                {
                    normalDistance -= Input.GetAxis("Mouse ScrollWheel") * MouseWheelSensitivity;
                }
    
                if (normalDistance < MouseZoomMin)
                {
                    normalDistance = MouseZoomMin;
                }
                if (normalDistance > MouseZoomMax)
                {
                    normalDistance = MouseZoomMax;
                }
               // transform.Translate(-transform.forward * normalDistance);
                transform.camera.fieldOfView = normalDistance;
            }
    
    
            
    
            //按返回键退出程序    
            //if (Input.GetKey(KeyCode.Escape))
            //{
            //    print(1);
            //    Application.Quit();
            //}  
    		
        }
    
        void OnGUI()
        {
    
    
            GUI.skin = customSkin;//赋值个性化皮肤
    
            //弹出功能选项框
            if (bOpenMenu)
            {
                myWindow = GUI.Window(0, myWindow, DoMyWindow, "");
                //限制移动的横纵向坐标
                //myWindow.x = Mathf.Clamp((float)myWindow.x,(float)0.0,(float)Screen.width-myWindow.width);
                //myWindow.y = Mathf.Clamp((float)myWindow.y, (float)0.0, (float)Screen.height - myWindow.height);
            }
    		
    			string s = "作者:丁小未";
                GUIStyle bb = new GUIStyle();
                bb.normal.background = null;//设置背景
                bb.normal.textColor = new Color(1,0,0);//设置颜色
                bb.fontSize = 40;
                GUI.Label(new Rect(40, 20, 100, 50), s, bb);
    		
        }
    
    
        private bool flagLight1 = false; //方向灯
        private bool flagLight2 = false; //远近灯
        
        void DoMyWindow(int windowsId)
        {
            GUI.BeginGroup(new Rect(10, 10, 500, 400));
    
            GUI.Box(stateBox, "");
    //
    //
    //        //点击关闭按钮
            if (GUI.Button(closeButton,"",GUI.skin.GetStyle("ExitButton")))
            {
                bOpenMenu = false;
            }
           // GUI.DragWindow();
            GUI.DrawTexture(rHero, tHero);
    
            for (int i = 0; i < 6;i++ )
            {
                GUI.DrawTexture(pBtn[i], iBtn[i]);
            }
    
            //写文字
            //GUI.Label(new Rect(170, 100, functionStr[0].Length, 20),guiCon[0],"TextItem");
            for (int i = 0; i < 4; i++)
            {
                GUI.Label(new Rect(174,108+i*38,functionStr[i].Length,20),guiCon[i],"TextItem");
            }
    
            //车轮更换
            //绿色开状态
            if (selectToggleWheel)
            {
                //加选择框
                selectToggleWheel = GUI.Toggle(new Rect(255, 110, 15, 15), selectToggleWheel, "", "TrueCheckItem");
    
            }
            //红色关闭状态
            else
            {
                selectToggleWheel = GUI.Toggle(new Rect(255, 110, 15, 15), selectToggleWheel, "", "FalseCheckItem");
    
            }
            //雨刷器
            if (selectToogleWiper)
            {
                //加选择框
                selectToogleWiper = GUI.Toggle(new Rect(255, 148, 15, 15), selectToogleWiper, "", "TrueCheckItem");
    
            }
            //红色关闭状态
            else
            {
                selectToogleWiper = GUI.Toggle(new Rect(255, 148, 15, 15), selectToogleWiper, "", "FalseCheckItem");
    
            }
    
            //转向灯
            //左转
            if (selectToogleLeftTurningLight)
            {
                if (flagLight1&&selectToogleRightTurningLight) //右边打开
                {
                    selectToogleRightTurningLight = false; //关闭右边
                }
                //加选择框
                selectToogleLeftTurningLight = GUI.Toggle(new Rect(255, 186, 15, 15), selectToogleLeftTurningLight, "", "TrueCheckItem");
                flagLight1 = true;
            }
            //红色关闭状态
            else
            {
                selectToogleLeftTurningLight = GUI.Toggle(new Rect(255, 186, 15, 15), selectToogleLeftTurningLight, "", "FalseCheckItem");
                flagLight1 = false;
            }
            //右转
            if (selectToogleRightTurningLight)
            {
                if (flagLight1 && selectToogleLeftTurningLight) //左边打开
                {
                    selectToogleLeftTurningLight = false; //关闭右边
                }
                //加选择框
                selectToogleRightTurningLight = GUI.Toggle(new Rect(285, 186, 15, 15), selectToogleRightTurningLight, "", "TrueCheckItem");
                flagLight1 = true;
            }
            //红色关闭状态
            else
            {
                selectToogleRightTurningLight = GUI.Toggle(new Rect(285, 186, 15, 15), selectToogleRightTurningLight, "", "FalseCheckItem");
                flagLight1 = false;
            }
    
            //前照灯
            //近
            if (selectToogleNearLight)
            {
                if (flagLight2 && selectToogleFarLight) //远灯打开
                {
                    selectToogleFarLight = false; //关闭远灯
                }
                //加选择框
                selectToogleNearLight = GUI.Toggle(new Rect(255, 224, 15, 15), selectToogleNearLight, "", "TrueCheckItem");
                flagLight2 = true;
            }
            //红色关闭状态
            else
            {
                selectToogleNearLight = GUI.Toggle(new Rect(255, 224, 15, 15), selectToogleNearLight, "", "FalseCheckItem");
                flagLight2 = false;
            }
            //远
            if (selectToogleFarLight)
            {
                if (flagLight2 && selectToogleNearLight) //近灯打开
                {
                    selectToogleNearLight = false;
                }
                //加选择框
                selectToogleFarLight = GUI.Toggle(new Rect(285, 224, 15, 15), selectToogleFarLight, "", "TrueCheckItem");
                flagLight2 = true;
            }
            //红色关闭状态
            else
            {
                selectToogleFarLight = GUI.Toggle(new Rect(285, 224, 15, 15), selectToogleFarLight, "", "FalseCheckItem");
                flagLight2 = false;
            }
    
            GUI.EndGroup();
        }
    
    }
    

    门盖控制:

    private bool isOpenDoor = false;
    private bool openDoor = false;
    private bool closeDoor = false;
    
    private int target = 0;
    
    int flag = 0;
    
    Ray ray;
    RaycastHit hitobj;
    private GameObject doorl; //左门
    
    // Use this for initialization
    	void Start () {
            doorl = GameObject.Find("doorL");//左门
    		
    	}
    	
    	// Update is called once per frame
    	void Update () {
            //画出射线
            ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    	    if (Input.GetMouseButtonDown(0))
    	    {
                //鼠标点击车门
                if (Physics.Raycast(ray,out hitobj,1000))
                {
                    print("ddd");
                    Debug.DrawLine(ray.origin, hitobj.point);
    				//左车门
                    if (hitobj.collider.name == "doorL")
                    {
                        print("111");
                        if (flag == 0)
                        {
                            openDoor = true;
                            closeDoor = false;
                        }
                        else
                        {
                            closeDoor = true;
                            openDoor = false;
                        }
    
                        flag++;
                        flag %= 2;
                    }
    }
    		//开左门
    	    if (openDoor)
    	    {
                //开门
                if (target < 40 && !isOpenDoor)
                {
                    doorl.transform.Rotate(Vector3.forward, 1);
                    target = target + 1;
                }
                else
                {
                    isOpenDoor = true;
                }
    	    }
    	    if(closeDoor)
            {
                //关门
                if (isOpenDoor && target > 0)
                {
                    doorl.transform.Rotate(-Vector3.forward, 1);
                    target -= 1;
                }
                else
                {
                    isOpenDoor = false;
                }
            }
    }

    效果图:



    关于Unity3D,我们有个专门技术讨论的大群,可以进行技术交流和咨询,群号:858550 欢迎进行技术讨论,里面有不少大牛

    展开全文
  • mesh" TITLE="[原创]unity3D学习【功能实现】之五:在图片上显示文字或名字,可更改text mesh" /> mesh" TITLE="[原创]unity3D学习【功能实现】之五:在图片上显示文字或名字,可更改text mesh" />先看下效果吧。...
    [原创]unity3D学习【功能实现】之五:在图片上显示文字或名字,可更改text <wbr>mesh

    [原创]unity3D学习【功能实现】之五:在图片上显示文字或名字,可更改text <wbr>mesh先看下效果吧。
    用处和目标:主要是用到textmesh这个组件。主要用在比如人物头上显示名称,或者用于可改变数字的仪表等等。步骤也很简单。
    步骤:1,先新建立一个gameobject,我改名字叫:kongshuzi。然后添加组件Add Component---TextMesh。然后在Text里面设置自己的文字
             2,然后在kongshuzi下面建立一个图片。kongshuzi--2Dobject---Sprite。(当用以后3D估计也是可以的,不过我现在集中学习2D),把这个小方块图片(自己准备好的,可以是人物头像等等)拖到Sprite里面。
            3,然后你就注意到Sprite的坐标x,y都是0。因为他是相对于这个kongshuzi的,所以把y改成-60,就发现图片会在文字的下面了。
    /
    好了,以上是初级教程,下面稍微能在实际中用的到的,把这个带文字的图片做成预制件。
           1,拖到projext成为预制件,然后把原来的这个删除。
           2,在新建一个c#,名字:gmManager,代码如下
        privateGameObject go;
        publicGameObject preBock;//这个要把预制件拖进去的
        void Start() {
       
          go=(GameObject)Instantiate (preBock, new Vector2 (-132f, 132f),Quaternion.identity);
    //显示位置,强制转换成GameObject
          go.GetComponent().text="2048";//更改文字
          go.GetComponent ().characterSize =5;//字体大小根据实际情况调试
           }
    结束。
    这个以后做2048的时候要用到,当然以上功能用ugui也是可以做到的。
       
    展开全文
  • Unity3D 脚本参考

    千次阅读 2012-01-19 14:55:54
    Unity3D 脚本中文参考 (1) 这是一个关于Unity内部脚本如何工作的简单概览。 Unity内部的脚本,是通过附加自定义脚本对象到游戏物体组成。在脚本对象内部不同的函数被特定的事件调用。最常用的列在下面: Update...
  • 文章目录
  • http://forum.unity3d.com/threads/how-to-make-a-physically-real-stable-car-with-wheelcolliders.50643/ (请大家搬运转载的时候,尊重原作,连同上面信息一起转载。不仅是诚意贴,而且WheelColliders的文献有...
  • 环境配置——SteamVR2.0
  • 在osgearth的三维场景中,为了实现添加项目名称或者其他固定在屏幕某一位置的内容,可以采用HUD技术进行开发。本文以添加项目名称“三维仿真系统”为例,实现了osgearth三维场景中HUD的显示,实现效果如图1所示。...
  • 信道仿真学习(一)

    千次阅读 2019-05-28 18:31:51
    简单的理解,信道仿真就是按照某种模型对无线信号进行处理。 1. 无线信号在信道中传输效应 阴影效应:由大型建筑物和其它物体的阻挡,在电波传播的接收区域中产生传播半盲区。它类似于太阳光受阻挡后可产生的阴影...
  • 随着IT信息技术和移动端的发展,Html5+3D(Webgl)技术已经悄然崛起,而3D工厂厂房在数字化的今天,已经被越来越多的公司和企业应用,三维数字工厂模型的应用,加快了工厂厂房,设备,传感器、管道罐体输送、监测控制...
  • 工业物联网的应用:工业4.0是如何帮助博世力士乐改进生产线的 万物云联网  图1、工业革命的不断演进 博世力士乐(Bosch Rexroth)利用工业4.0来实现零故障战略; ...博世力士乐(Bosch Rexroth)制造与工业和汽车...
  • 综合虚拟试衣平台

    2019-09-23 21:55:49
    【摘要】 综合虚拟试衣平台是一个完整的虚拟试衣体验系统,拥有电子商城、线下虚拟试衣设备、核心SAAS平台三个模块。人们可以在线上线下,通过鼠标选择场景、人物、衣物...【关键词】 虚拟换装,Unity3D,电子商城 ...
  • Multigen VEGA簡介

    千次阅读 2008-04-03 09:34:00
    Multigen VEGA开放分类: 编程、三维、VR、虚拟仿真、实时视景仿真 Multigen VEGA 是MultiGen -Paradigm公司最主要的工业软件环境,用于实时视觉模拟、虚拟现实和普通视觉应用。Vega将先进的模拟功能和...
  • Cardboard Unity SDK Reference中文翻译版,水平有限请以英文版为准。 Plugin Reference Package 内容 Unity插件包包含以下内容: 脚本 · Cardboard.cs -本地代码虚拟现实设备的单例模式连接。 · ...
  • Cardboard Unity SDK Reference 翻译版

    千次阅读 多人点赞 2015-11-20 13:17:19
    最近正在准备雅思,趁机翻译了Cardboard的文档,这个文档挂在谷歌官网上,不翻墙根本看不了,翻了墙这个网页也很不稳定,经常上不去,所以就搬运了过来,不过我英语水平实在有限,这次翻译也是对自己的一次锻炼,有...
1 2 3 4 5 6
收藏数 114
精华内容 45
关键字:

unity3d仪表模型