[go: up one dir, main page]

CN115794979B - A GIS digital twin system based on Unity3D - Google Patents

A GIS digital twin system based on Unity3D Download PDF

Info

Publication number
CN115794979B
CN115794979B CN202211524789.1A CN202211524789A CN115794979B CN 115794979 B CN115794979 B CN 115794979B CN 202211524789 A CN202211524789 A CN 202211524789A CN 115794979 B CN115794979 B CN 115794979B
Authority
CN
China
Prior art keywords
main camera
function
zoom
mouse
target object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211524789.1A
Other languages
Chinese (zh)
Other versions
CN115794979A (en
Inventor
王智慧
王松
李豪杰
宁森
刘丁宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dalian University of Technology
Original Assignee
Dalian University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dalian University of Technology filed Critical Dalian University of Technology
Priority to CN202211524789.1A priority Critical patent/CN115794979B/en
Publication of CN115794979A publication Critical patent/CN115794979A/en
Application granted granted Critical
Publication of CN115794979B publication Critical patent/CN115794979B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本发明属于地理信息系统技术领域,提出一种基于Unity3D的GIS数字孪生系统。基于Unity3D的GIS数字孪生系统包括资源下载模块、视角控制模块、视角过渡模块、模型交互模块、监控管理模块和账户管理模块。使用虚拟的3D数据映射现实生活,保证数字与物理世界协调一致,能够对建筑和监控实时监测、管理和数据分析。本发明成本低,可控度高,可跨平台开发,数据无需经过第三方平台,隐私更加安全。使用射线点击进行模型交互,使用全局变量解决高亮冲突;运用广告牌技术显示监控按钮,不受场景放大缩小的影响;使用插值算法实现主摄像机视角的平滑过渡。为GIS系统开发人员提供了可靠的解决方案,降低开发门槛并注重具体需求。The present invention belongs to the technical field of geographic information systems, and proposes a GIS digital twin system based on Unity3D. The GIS digital twin system based on Unity3D includes a resource download module, a perspective control module, a perspective transition module, a model interaction module, a monitoring management module, and an account management module. Use virtual 3D data to map real life to ensure the coordination between the digital and physical worlds, and be able to monitor, manage, and analyze data for buildings and monitoring in real time. The present invention has low cost, high controllability, and can be developed across platforms. Data does not need to pass through a third-party platform, and privacy is more secure. Use ray clicks for model interaction, and use global variables to resolve highlight conflicts; use billboard technology to display monitoring buttons, which are not affected by scene zooming in and out; use interpolation algorithms to achieve smooth transitions of the main camera's perspective. Provides a reliable solution for GIS system developers, lowers the development threshold, and focuses on specific needs.

Description

GIS digital twin system based on Unity3D
Technical Field
The invention relates to the technical field of geographic information systems, in particular to a Unity 3D-based GIS digital twin system.
Background
At present, 3D data is gaining more and more attention and is widely applied because 3D data has visual, comprehensive and other advantages compared with 2D data. It is therefore necessary to build a GIS digital twin system using 3D data. The development of GIS digital twin systems using what tools and how to develop are currently the challenges.
The geographic information system (Information System is called GIS for short) can display the data of the space geographic coordinates, process the space position, study various effective management methods for various data, and can quickly obtain certain necessary information about the application through comprehensive analysis and display the processed result in a map, graph or data mode.
The digital twin system (DIGITAL TWIN SYSTEM) refers to a process and a function of fully utilizing the measurement, model parameter update and three-dimensional history data of the existing physical model in the virtual space of the computer to complete the mapping of the physical and the objects in the virtual space, thereby reflecting the full life cycle of the entity model in the corresponding real life. In recent years, due to the continuous development of computer vision technology and the continuous refinement of 3D modeling models, a GIS digital twin system is further applied to play a space, and plays an important role in multiple fields of urban planning, enterprise digitization, traffic control, navigation, online travel and the like.
For these application scenarios, some companies develop corresponding software or website systems for developers to use, but the digital twin system developed in this way needs to be developed by means of a third party platform, and various data in the development system also passes through the third party platform, so that there is a great privacy safety hazard. Meanwhile, the traditional GIS system development mode and development platform are often complicated and cumbersome, the development of a large GIS system is usually based on a small amount of visual tests and comprises stacking and nesting of a large amount of logic codes, the GIS system is usually required to be designed and developed by cooperation of multiple persons, and meanwhile, the problem of difficulty is how to integrate codes of a large amount of different developers into a set of complete and smooth running system. This makes the development difficulty of the developer and the difficulty of solving the problem go straight up.
And the application systems are generally developed independently for a specific application scene, and lack the expandability and platform compatibility of a complete GIS digital twin system. Conventional GIS often integrate source code together and use linked libraries or components in concert, but it is often the case that each time a program is integrated and code maintained, the source code needs to be recompiled and linked, and then new software is reissued, which is cumbersome and aggravates the workload of system maintenance. Therefore, we choose to use the Unity3D open source engine to develop the GIS digital twin system, so as to avoid or slow down the generation of the problems.
The Unity3D engine is a development platform capable of performing 3D games and project creation in real time, provides a complete set of software solution, and supports platforms including mobile phones, tablet computers, PCs, game hosts, augmented reality and virtual reality devices. The platform is provided with a mature visual interface, a physical engine system and a built-in integrated library, and a developer can complete the construction of a scene and the realization of specific logic and functions by a small number of scripts and by means of dragging or adding a state machine. The developer can write or modify the related plug-in and other advanced operations to realize the specific functions required, the parameters of the project can be conveniently and quickly modified and debugged in real time when the project is operated, the loading fineness of the model can be quickly modified, and the database and the back end can be connected. The Unity3D has a complete, mature and quick development mode, supports the compatibility of a full platform, and can run on platforms such as an Android end, a Mac end and a Web end only by modifying a few codes when a project running on a PC end is needed.
Disclosure of Invention
The invention aims to provide a GIS digital twin system based on Unity3D, which uses virtual 3D data to map real life, ensures that the number is coordinated with the physical world, can carry out real-time monitoring, data analysis and various simulations based on a digital model, and solves the defects of the prior art.
The technical scheme includes that the GIS digital twin system based on Unity3D comprises a resource downloading module, a view angle control module, a view angle transition module, a model interaction module, a monitoring management module and an account management module, wherein the resource downloading module downloads resources from a server and decompresses the resources, the view angle control module is used for zooming in and out the view angle when the view angle is monitored in a full screen mode, the view angle transition module is used for zooming out the view angle when the view angle is monitored in a full screen mode, zooming in and out the view angle when the view angle is monitored in a full screen mode, the model interaction module is used for clicking building display information and highlighting, clicking the floor to highlight, entering the floor to click the room display information and highlighting, the monitoring management module is used for controlling and displaying or hiding the monitoring button in a button mode, clicking the monitoring display information and realizing account management, and the account management module is used for interfacing a user database.
The resource downloading module specifically comprises:
Step 1.1, storing a compressed resource file in a server, wherein the resource file comprises resources such as a 3D model, a video and the like;
Step 1.2, in the operation initialization stage of the digital twin system, judging whether the downloading of the resource file is completed or not, and checking the version number of the resource file; when the resources are not downloaded or the version numbers are inconsistent, the information of the resource files to be downloaded is sent to the server, the latest version of the resource files are downloaded from the server, and the latest version of the resource files are decompressed to the appointed catalogue after the downloading is completed;
and 1.3, downloading the resource file for use with hot update, wherein when the program changes UI display or modifies program logic, a developer does not repackage the program, and a user does not download the client again.
The visual angle control module specifically comprises:
Step 2.1, a user-defined creation view angle control script Click2Rotate.cs defines a rotating object target, a moving speed moveSpeed, a rotating speed rotateSpeed and a zooming speed zoomSpeed;
Step 2.2, a camera movement function cameraRotate () is customized in an Update () function of a view angle control script click2 rotation.cs, movement information of an X axis and a Y axis of a mouse is obtained through input.GetAxis () of a Unity editor, so that the position of a main camera is changed, and the calculation formula is as follows:
mainCamera.transform.Translate(Vector3.left*(mouse_x*moveSpeed)*
Time.deltaTime);
mainCamera.transform.Translate(Vector3.up*(mouse_y*moveSpeed)*
Time.deltaTime);
wherein MAINCAMERA is the main camera, transform () is a function of the Unity editor, vector3 represents a three-dimensional Vector, left is a left Vector of the main camera, up is an up Vector of the main camera, mouse_x is movement information of the mouse X axis, mouse_y is movement information of the mouse Y axis, moveSpeed is movement speed, and time.
When the right button of the mouse is pressed and moved, the position of the main camera is moved according to the moving speed, and the function of moving the visual angle is completed;
Step 2.3, the rotation view function cameraZoom () is customized in the Update () function of the view control script, and its calculation formula is as follows:
mainCamera.transform.RotateAround(transform.position,Vector3.up,mouse_x*rotateSpeed);
mainCamera.transform.RotateAround(transform.position,Vector3.right,mouse_y*rotateSpeed);
Wherein transform. Rotation around () is the surrounding rotation function of the Unity editor, transform. Position is the main camera position coordinates, right is the right vector of the main camera, rotateSpeed is the rotation speed;
when the left button of the mouse is pressed and moved, the visual angle of the camera is rotated according to the rotation speed;
step 2.4, customizing a view scaling function in an Update () function of the view control script, wherein the calculation formula is as follows:
When input.GetAxis ("Mouse ScrollWheel") >0, the formula is
mainCamera.transform.Translate(Vector3.forward*zoomSpeed);
When input. Getaxis ("Mouse ScrollWheel") <0, the formula is
mainCamera.transform.Translate(Vector3.forward*-zoomSpeed);
The input GetAxis ("Mouse ScrollWheel") is a Unity editor, the rolling information function of the mouse wheel is obtained, forward is the forward vector of the main camera, and zoomSpeed is the zoom speed;
when the mouse wheel rolls, the main camera is moved forward or backward towards the camera according to the zoom speed, so as to finish zooming the visual angle;
And 2.5, adding a view control script to the main camera in the Unity editor, setting values of a moving speed, a rotating speed and a zooming speed, and giving the main camera to the rotating object.
The visual angle transition module specifically comprises:
Step 3.1, creating a zoom-in view script CamaraFollow.cs by user definition, and defining a target object, a target object moving speed, a target object rotating speed, a minimum angle and a minimum distance;
Step 3.2, acquiring the real-time position and the main camera position of the target object in LateUpdate () function of the zoom-in view script camera focus, calculating the direction vector from the main camera to the target object through the real-time position and the main camera real-time position of the target object, calculating the angle between the main camera direction and the direction vector from the main camera to the target object, and calculating the distance between the real-time position and the main camera real-time position of the target object;
Step 3.3, when the main camera orientation and the angle between the main camera and the direction vector of the target object > minimum angle, rotating the main camera view angle by Lerp () interpolation function, the main camera view angle is denoted camRoatae, the calculation formula is as follows:
camRotate=Quaternion.Lerp(transform.rotation,dir,rotateSpeed*Time.deltaTime)
Wherein, quaternion. Lerp () is an interpolation function, transform. Rotation is a real-time view angle of the main camera, dir is a direction vector from the main camera to the target object, rotateSpeed is a target object rotation speed, and Time. DeltaTime is an increment time provided by the Unity editor;
When the distance between the real-time position of the target object and the real-time position of the main camera > minimum distance, the main camera position is moved to be close to the target object by Lerp () interpolation function, the main camera position is denoted as camPos, and the calculation formula is as follows:
camPos=Vector3.Lerp(camPos,tarPos,moveSpeed*Time.deltaTime)
wherein vector3.Lerp () is an interpolation function, transform. Position is a main camera real-time position, camPos is a main camera position, tarPos is a target object real-time position, and moveSpeed is a target object moving speed;
When the condition that the angle between the main camera orientation and the direction vector from the main camera to the target object is not satisfied is the minimum angle and the distance between the real-time position of the target object and the real-time position of the main camera is the minimum distance, closing or removing the self-defined visual angle zoom-in script to complete the visual angle zoom-in function;
Step 3.4, self-defining and creating a remote visual angle script CameraFar.cs, defining remote speed and maximum distance, obtaining a primary camera initial position in a Start () function, obtaining a primary camera real-time position in an Update () function, calculating the distance between the primary camera and the initial position through the primary camera initial position and the primary camera real-time position, moving the primary camera at the remote speed towards the opposite direction of the visual angle of the camera when the distance between the primary camera and the initial position is the maximum distance, closing or removing the self-defined remote visual angle script when the distance between the primary camera and the initial position is the maximum distance, and completing the visual angle remote function;
Step 3.5, a custom creation script control script controls the above zoom-in view script and the zoom-out view script, defines a private zoom-in view class object, and adds the zoom-in view script to the camera object in the Start () function, wherein the formula is as follows:
camFow=mainCamera.AddComponent<CameraFollow>(),
wherein camFow is a zoom-in view class object, MAINCAMERA is a camera object, addComponent is an add script function of a Unity editor, cameraFollow is a zoom-in view script;
and finally, assigning a value to the target object moving speed, the target object rotating speed, the minimum angle and the minimum distance in camFow.
The model interaction module specifically comprises:
Step 4.1, a ray click script ClkHiliCtrl.cs is custom created, a collision body detection function is completed, and whether a mouse ray collides with a model or not is judged to generate an interaction function;
a mouse ray is created, denoted as ray, whose formula is as follows:
ray=Camera.main.ScreenPointToRay(Input.mousePosition)
wherein camera main is the main camera, input. Mouseposition is the coordinate of mouse click, screenPointToRay () is the function provided by Unity editor;
and then performing collision detection, wherein whether collision occurs or not is expressed as isHit, and the calculation formula is as follows:
isHit=Physics.Raycast(ray,out hit,maxDistance,clickableLayer)
wherein hit contains object information detected by collision, maxDistance is the maximum length of rays, clickableLayer is a clickable object layer, and Physics.
When isHit is true, an object detected by collision is acquired, denoted obj, and the calculation formula is as follows:
obj=hit.collider.gameObject
wherein collider is the impactor attribute of the Unity editor, gameObject is the object attribute of the Unity editor;
When the mouse clicks, acquiring mouse click information, creating corresponding rays, and acquiring a collision object when the rays detect a collision body;
Step 4.2, obtaining the label of the collision object, obtaining the information of the collision object from the database according to the label, wherein the information comprises the object name, the object position and the object function, and updating the object information into a text content area for display;
And 4.3, loading HighlighterPlus a highlight plug-in, loading a collision body of a corresponding tag with a highlight attribute, setting the highlight attribute to be normally bright, activating the highlight attribute to complete the highlight display, using a global variable to solve the highlight conflict, detecting whether rays pressed by a mouse collide with a 3D model, canceling the highlight of the object in the global variable when the 3D model is collided and the object in the global variable is in the highlight state, and highlighting the collided building.
The maximum length of the ray in the step 4.1 is 1000.
The monitoring management module specifically comprises:
Step 5.1, a button control script is custom created, when the display or hiding monitoring is clicked, all monitoring camera icons are obtained, and all monitoring icons are displayed or hidden;
And 5.2, displaying a monitoring button by using a billboard technology, enabling the monitoring button to always face to a main camera visual angle, enabling the display size not to be influenced by scene enlargement or reduction, custom creating a billboard loader file, defining an upward vector of the button to be consistent with the upward vector of a camera, defining a forward vector as a normal vector pointing to the front surface of a camera plane, defining a rightward vector as a cross product of the upward vector and the forward vector, transforming all vertex coordinates of the button through the upward vector, the forward vector and the rightward vector to obtain the vertex coordinates of a final display button, and representing the vertex coordinates as localPos, wherein the calculation formula is as follows:
localPos=center+centerOffs*[rightDir,upDir,normalDir]
Wherein centerOffs is the coordinates of all the vertexes of the button, which are three-dimensional column vectors, the coordinates of x, y and z axes respectively, center is the origin of coordinates, rightDir is the right vector, upDir is the upward vector, normalDir is the forward vector, and the matrix is multiplied;
And then carrying out zoom control on the buttons, creating a billboard script by self definition, wherein the zoom factor is expressed as k, and the calculation formula is as follows:
k=(depth-nearPlaneDis)/(farPlaneDis-nearPlaneDis)
Wherein k is a zoom factor, depth is the distance from the button to the main camera, NEARPLANEDIS is the distance from the main camera near plane to the main camera, FARPLANEDIS is the distance from the main camera far plane to the main camera;
finally, scaling the vertex coordinates of the final display button according to the scaling factor to obtain the final billboard display effect;
Step 5.3, when the user checks the monitoring picture in a full screen mode, calling a self-defined visual angle zooming script to enable the main camera to rotate to an angle towards the target object stably, and then smoothly zooming in the distance between the main camera and the target object to finish the visual angle transition function;
And 5.4, when a closing button at the upper right corner of the full-screen monitoring picture is clicked, the transparency channel value of the video is gradually changed to 1, the display of the full-screen monitoring picture is finally canceled, and then a user-defined visual angle zooming script is called, so that the main camera is gradually zoomed out to the original position.
The set value in the step 5.3 is 100.
The account management module specifically comprises:
step 6.1, a server installs MySQL operation environment, and references MySql.Data.dll dynamic link library files in a Unity editor to operate a database;
step 6.2, referring to MySql.data.MySqlClient package for connecting database and operating database data, creating database access class MYSQLACCESS comprising 5 character string variables for storing database information, namely IP address, port number, user name, password and database name, and defining MYSQLACCESS functions comprising database function opening, table function creation, data insertion function, query function, update function, deletion function and connection function closing;
Step 6.3, operating the database, referring to MYSQLACCESS class in step 6.2, declaring the class object for connecting and operating the database, calling the database function connection database in step 6.2, calling the user-defined creation table function to create a user information table, wherein the user information table comprises user names, user passwords and user roles, different user roles correspond to different authorities, calling the user-defined insertion data function to insert data into the user information table, and calling the user-defined connection closing function to close the database connection.
The interpolation function is used for realizing smooth transition of the view angle of the main camera, when a user interacts with the system, the user enters a certain floor or monitors the full screen display to automatically trigger the zoom-in transition of the view angle, the view angle smoothly turns to a target object and zooms in, and the user exits the floor or cancels the monitoring of the full screen display to automatically trigger the zoom-out transition of the view angle.
The GIS digital twin system based on the Unity3D has the beneficial effects that the GIS digital twin system based on the Unity3D is provided. The Unity3D editor is an open source engine, is low in cost, powerful in platform function, excellent in visual effect, capable of being used for receiving a database, convenient to develop across platforms (PC, web, android), high in universality, capable of supporting various third-party plug-ins, high in self-definition degree, capable of completing more specific functions on the basis, high in controllability, safer in privacy, capable of achieving model interaction without a third-party platform by using ray clicking, capable of achieving highlight conflict by using global variables, capable of displaying monitoring buttons by using a billboard technology, free of influence of scene magnification and reduction, and capable of achieving smooth transition of a main camera view angle by using an interpolation algorithm. The method provides a reliable solution for subsequent GIS system developers, so that the GIS developers can pay more attention to specific requirements, and the development threshold of the digital twin system is reduced.
Detailed Description
The invention is further described below with reference to the following technical solutions.
The invention provides a Unity 3D-based GIS digital twin system, which utilizes custom scripts and plug-ins to complete specific functions in the digital twin system, uses virtual 3D data to map real life, ensures coordination and consistency of numbers and physical worlds, and can perform real-time monitoring, data analysis and various simulations based on a digital model. By using the system, the complexity and the complexity of the traditional GIS development platform can be avoided, and the development threshold is reduced. The used development platform is Unity3D, has low cost, can be developed across the platform, supports a third party plug-in, has high custom degree, and can complete more specific functions on the basis. Most importantly, the controllability is high, data does not need to pass through a third party platform, and privacy is safer.
Example 1 viewing angle control and viewing angle transition.
The viewing angle control of the 3D scene can be performed by using the mouse in the GIS digital twin system based on the Unity3D, when the right key of the mouse is pressed and moved on the interface of the 3D scene, the viewing angle can be moved, when the left key of the mouse is pressed and moved, the viewing angle can be rotated, and when the mouse wheel is rolled, the viewing angle can be scaled.
When a user interacts with the system, certain operations automatically trigger the view transition function. When a floor is accessed or the full-screen display is canceled, the visual angle zoom-in transition is automatically triggered, the visual angle smoothly turns to the target object and zooms in, and when the floor is accessed or the full-screen display is canceled, the visual angle zoom-out transition is automatically triggered.
Example 2 model interaction.
Clicking on a building in a 3D scene will display building information and highlight the corresponding building in the sidebar, clicking on the floor of the sidebar will display floor information and highlight the corresponding floor, clicking on the "enter" button at the sidebar floor will enter the floor, and can interact with rooms and furniture in the floor.
Example 3 monitoring management.
The monitoring display or hiding can be controlled by the button in the system, when the monitoring display is performed, the monitoring button is displayed by using the billboard technology, the button always faces the main visual angle, the absolute size is not influenced by the enlargement or the reduction of the scene, namely, the absolute sizes of the monitoring buttons are the same in scenes with different scaling ratios. Clicking the monitor will display detailed information and display the monitor thumbnail video, clicking the full screen button below the thumbnail video will cause the monitor video to be displayed full screen.
Example 4 Account management.
The system can manage accounts through connecting the database, and can perform operations of adding, deleting, modifying and searching of users through the interactive interface. The database is stored in the private server, and data privacy is safer without going through a third party platform.

Claims (5)

1.一种基于Unity3D的GIS数字孪生系统,其特征在于,该基于Unity3D的GIS数字孪生系统包括资源下载模块、视角控制模块、视角过渡模块、模型交互模块、监控管理模块和账户管理模块;资源下载模块为从服务器下载资源并解压;视角控制模块为缩放视角、旋转视角、平移视角;视角过渡模块为在全屏显示监控时拉近视角,退出全屏时拉远视角,进入楼层时拉近视角;模型交互模块为点击建筑显示信息并高亮,点击楼层进行高亮,进入楼层,点击房间显示信息并高亮;监控管理模块为按钮控制监控显现或隐藏,广告牌技术显示监控按钮,点击监控显示信息,全屏展示监控;账户管理模块为对接用户数据库,实现账户管理;1. A GIS digital twin system based on Unity3D, characterized in that the GIS digital twin system based on Unity3D includes a resource download module, a perspective control module, a perspective transition module, a model interaction module, a monitoring management module and an account management module; the resource download module is used to download resources from a server and decompress them; the perspective control module is used to zoom the perspective, rotate the perspective, and translate the perspective; the perspective transition module is used to zoom in when displaying monitoring in full screen, zoom out when exiting full screen, and zoom in when entering a floor; the model interaction module is used to click on a building to display information and highlight it, click on a floor to highlight it, enter a floor, and click on a room to display information and highlight it; the monitoring management module is used to control the display or hiding of monitoring by buttons, display monitoring buttons by billboard technology, click on monitoring to display information, and display monitoring in full screen; the account management module is used to connect to the user database to realize account management; 所述视角过渡模块具体为:The perspective transition module is specifically: 步骤3.1,自定义创建拉近视角脚本,定义目标对象、目标对象移动速度、目标对象旋转速度、最小角度、最小距离;Step 3.1, create a custom zoom-in script, define the target object, target object movement speed, target object rotation speed, minimum angle, and minimum distance; 步骤3.2,在拉近视角脚本的LateUpdate()函数中,获取目标对象的实时位置和主相机位置,通过目标对象的实时位置和主相机实时位置计算主相机到目标对象的方向向量,计算主相机朝向和主相机到目标对象的方向向量之间的角度,计算目标对象的实时位置和主相机实时位置之间的距离;Step 3.2, in the LateUpdate() function of the zoom-in script, obtain the real-time position of the target object and the position of the main camera, calculate the direction vector from the main camera to the target object through the real-time position of the target object and the real-time position of the main camera, calculate the angle between the main camera orientation and the direction vector from the main camera to the target object, and calculate the distance between the real-time position of the target object and the real-time position of the main camera; 步骤3.3,当主相机朝向和主相机到目标对象的方向向量之间的角度>最小角度时,通过Lerp()插值函数旋转主相机视角,主相机视角表示为camRotate,其计算公式如下:Step 3.3, when the angle between the main camera orientation and the direction vector from the main camera to the target object is greater than the minimum angle, the main camera perspective is rotated by the Lerp() interpolation function. The main camera perspective is represented by camRotate, and its calculation formula is as follows: camRotate=Quaternion.Lerp(transform.rotation,dir,rotateSpeed*Time.deltaTime)camRotate=Quaternion.Lerp(transform.rotation,dir,rotateSpeed*Time.deltaTime) 其中,Quaternion.Lerp()为插值函数,transform.rotation为主相机实时视角,dir为主相机到目标对象的方向向量,rotateSpeed为目标对象旋转速度,Time.de ltaTime为Unity编辑器提供的增量时间;Among them, Quaternion.Lerp() is the interpolation function, transform.rotation is the real-time viewing angle of the main camera, dir is the direction vector from the main camera to the target object, rotateSpeed is the rotation speed of the target object, and Time.deltaTime is the incremental time provided by the Unity editor; 当目标对象的实时位置和主相机实时位置之间的距离>最小距离时,通过Lerp()插值函数移动主相机位置使其靠近目标对象,主相机位置表示为camPos,其计算公式如下:When the distance between the real-time position of the target object and the real-time position of the main camera is greater than the minimum distance, the main camera position is moved closer to the target object through the Lerp() interpolation function. The main camera position is represented as camPos, and its calculation formula is as follows: camPos=Vector3.Lerp(camPos,tarPos,moveSpeed*Time.deltaTime)camPos=Vector3.Lerp(camPos,tarPos,moveSpeed*Time.deltaTime) 其中,Vector3.Lerp()为插值函数,camPos为主相机位置,tarPos为目标对象的实时位置,moveSpeed为目标对象移动速度;Among them, Vector3.Lerp() is the interpolation function, camPos is the main camera position, tarPos is the real-time position of the target object, and moveSpeed is the moving speed of the target object; 当不满足条件主相机朝向和主相机到目标对象的方向向量之间的角度>最小角度和目标对象的实时位置和主相机实时位置之间的距离>最小距离时,关闭或移除自定义的视角拉近脚本,完成视角拉近功能;When the conditions that the angle between the main camera orientation and the direction vector from the main camera to the target object > the minimum angle and the distance between the real-time position of the target object and the real-time position of the main camera > the minimum distance are not met, close or remove the custom perspective zoom-in script to complete the perspective zoom-in function; 步骤3.4,自定义创建拉远视角脚本,定义拉远速度、最大距离;在Start()函数中获取主相机初始位置;在Update()函数中获取主相机实时位置,通过主相机初始位置和主相机实时位置计算主相机与初始位置的距离;当主相机与初始位置的距离<最大距离时,使主相机朝相机视角的反方向以拉远速度进行移动;不满足条件主相机与初始位置的距离<最大距离时,关闭或移除自定义的拉远视角脚本;完成视角拉远功能;Step 3.4, create a custom zoom-out script, define the zoom-out speed and maximum distance; get the initial position of the main camera in the Start() function; get the real-time position of the main camera in the Update() function, and calculate the distance between the main camera and the initial position through the initial position and the real-time position of the main camera; when the distance between the main camera and the initial position is less than the maximum distance, move the main camera in the opposite direction of the camera's perspective at the zoom-out speed; when the condition that the distance between the main camera and the initial position is less than the maximum distance is not met, close or remove the custom zoom-out script; complete the zoom-out function; 步骤3.5,自定义创建脚本控制脚本,对以上拉近视角脚本和拉远视角脚本进行控制;定义私有的拉近视角类对象;在Start()函数中为相机对象添加拉近视角脚本,其公式如下:Step 3.5, create a custom script control script to control the above zoom-in script and zoom-out script; define a private zoom-in class object; add a zoom-in script to the camera object in the Start() function, and the formula is as follows: camFow=mainCamera.AddComponent<CameraFollow>(),camFow=mainCamera.AddComponent<CameraFollow>(), 其中,camFow为拉近视角类对象,mainCamera为主相机,AddComponent为Unity编辑器的添加脚本函数,CameraFollow为拉近视角脚本;Among them, camFow is the zoom-in view object, mainCamera is the main camera, AddComponent is the add script function of the Unity editor, and CameraFollow is the zoom-in view script; 最后为camFow中的目标对象移动速度、目标对象旋转速度、最小角度、最小距离赋值。Finally, assign values to the target object moving speed, target object rotation speed, minimum angle, and minimum distance in camFow. 2.根据权利要求1所述的一种基于Unity3D的GIS数字孪生系统,其特征在于,所述资源下载模块具体为:2. According to a Unity3D-based GIS digital twin system according to claim 1, it is characterized in that the resource download module is specifically: 步骤1.1,在服务器存放压缩的资源文件,资源文件包含3D模型和视频资源;Step 1.1, store the compressed resource files on the server, the resource files contain 3D models and video resources; 步骤1.2,数字孪生系统运行初始化阶段,判断资源文件是否已下载完成,并检验资源文件版本号;当资源未下载或版本号不一致时,向服务器发送需要下载的资源文件信息,并从服务器下载最新版资源文件,下载完成后解压到指定目录;当资源已下载且版本号一致时,直接进入程序;Step 1.2, in the initialization phase of the digital twin system operation, determine whether the resource file has been downloaded and check the version number of the resource file; when the resource has not been downloaded or the version number is inconsistent, send the resource file information to be downloaded to the server, and download the latest version of the resource file from the server. After the download is complete, decompress it to the specified directory; when the resource has been downloaded and the version number is consistent, enter the program directly; 步骤1.3,资源文件下载配合热更新使用;当程序更换UI显示或修改程序逻辑时,开发者不重新打包程序,用户不重新下载客户端;Step 1.3, resource file download and hot update; when the program changes the UI display or modifies the program logic, the developer does not repackage the program and the user does not re-download the client; 所述视角控制模块具体为:The viewing angle control module is specifically: 步骤2.1,自定义创建视角控制脚本,定义旋转对象、移动速度、旋转速度、缩放速度;Step 2.1, create a custom view control script to define the rotation object, movement speed, rotation speed, and scaling speed; 步骤2.2,在视角控制脚本的Update()函数中自定义相机移动函数,通过Un ity编辑器的Input.GetAxis()获取鼠标X轴和Y轴的移动信息,使主相机位置产生变化,其计算公式如下:Step 2.2, customize the camera movement function in the Update() function of the perspective control script, and obtain the movement information of the mouse X-axis and Y-axis through the Input.GetAxis() of the Unity editor to change the position of the main camera. The calculation formula is as follows: mainCamera.transform.Translate(Vector3.left*(mouse_x*moveSpeed)*Time.deltaTime);mainCamera.transform.Translate(Vector3.left*(mouse_x*moveSpeed)*Time.deltaTime); mainCamera.transform.Translate(Vector3.up*(mouse_y*moveSpeed)*Time.deltaTime);mainCamera.transform.Translate(Vector3.up*(mouse_y*moveSpeed)*Time.deltaTime); 其中,mainCamera为主相机,transform.Translate()为Unity编辑器的函数,Vector3表示三维向量,left为主相机的向左向量,up为主相机的向上向量,mo use_x为鼠标X轴的移动信息,mouse_y为鼠标Y轴的移动信息,moveSpeed为移动速度,Time.deltaTime为Unity编辑器的增量时间;Among them, mainCamera is the main camera, transform.Translate() is the function of the Unity editor, Vector3 represents a three-dimensional vector, left is the left vector of the main camera, up is the upward vector of the main camera, mouse_x is the movement information of the mouse X axis, mouse_y is the movement information of the mouse Y axis, moveSpeed is the movement speed, and Time.deltaTime is the incremental time of the Unity editor; 当鼠标右键按下并移动时,根据移动速度移动主相机位置,完成移动视角功能;When the right mouse button is pressed and moved, the main camera position is moved according to the moving speed to complete the function of moving the viewing angle; 步骤2.3,在视角控制脚本的Update()函数中自定义旋转视角函数,其计算公式如下:Step 2.3, define a custom rotation view function in the Update() function of the view control script. The calculation formula is as follows: mainCamera.transform.RotateAround(transform.position,Vector3.up,mouse_x*rotateSpee d);mainCamera.transform.RotateAround(transform.position,Vector3.up,mouse_x*rotateSpee d); mainCamera.transform.RotateAround(transform.position,Vector3.right,mouse_y*rotateSp eed);mainCamera.transform.RotateAround(transform.position,Vector3.right,mouse_y*rotateSp eed); 其中,transform.RotateAround()为Unity编辑器的围绕旋转函数,transform.position为主相机位置坐标,right为主相机的向右向量,rotateSpeed为旋转速度;Among them, transform.RotateAround() is the rotation function of the Unity editor, transform.position is the position coordinate of the main camera, right is the right vector of the main camera, and rotateSpeed is the rotation speed; 当鼠标左键按下并移动时,根据旋转速度旋转相机视角;完成旋转视角功能;When the left mouse button is pressed and moved, the camera view rotates according to the rotation speed; the function of rotating the view is completed; 步骤2.4,在视角控制脚本的Update()函数中自定义视角缩放函数,其计算公式如下:Step 2.4, customize the perspective scaling function in the Update() function of the perspective control script. The calculation formula is as follows: 当Input.GetAxis("Mouse ScrollWheel")>0时,计算式为mainCamera.transform.Translate(Vector3.forward*zoomSpeed);When Input.GetAxis("Mouse ScrollWheel")>0, the calculation formula is mainCamera.transform.Translate(Vector3.forward*zoomSpeed); 当Input.GetAxis("Mouse ScrollWheel")<0时,计算式为mainCamera.transform.Translate[Vector3.forward*(-zoomSpeed)];When Input.GetAxis("Mouse ScrollWheel")<0, the calculation formula is mainCamera.transform.Translate[Vector3.forward*(-zoomSpeed)]; 其中,Input.GetAxis("Mouse ScrollWheel")为Unity编辑器获取鼠标滚轮的滚动信息函数,forward为主相机的向前向量,zoomSpeed为缩放速度;Among them, Input.GetAxis("Mouse ScrollWheel") is the function used by the Unity editor to obtain the scroll information of the mouse wheel, forward is the forward vector of the main camera, and zoomSpeed is the zoom speed; 当鼠标滚轮滚动时,根据缩放速度将主相机向相机朝向方向前进或后退,完成缩放视角;When the mouse wheel is rolled, the main camera moves forward or backward in the direction of the camera according to the zoom speed to complete the zoom perspective; 步骤2.5,在Unity编辑器中,将视角控制脚本添加到主相机上,设定移动速度、旋转速度、缩放速度的值,将主相机赋予到旋转对象上;Step 2.5, in the Unity editor, add the view control script to the main camera, set the values of the moving speed, rotation speed, and scaling speed, and assign the main camera to the rotating object; 所述模型交互模块具体为:The model interaction module is specifically: 步骤4.1,自定义创建射线点击脚本,完成碰撞体检测功能,判定鼠标射线是否与模型撞击产生交互功能;输入为鼠标点击操作和鼠标点击坐标,输出为射线碰撞检测到的对象;Step 4.1, create a custom ray click script to complete the collision body detection function and determine whether the mouse ray collides with the model to generate an interactive function; the input is the mouse click operation and the mouse click coordinates, and the output is the object detected by the ray collision; 创建鼠标射线,表示为ray,其公式如下:Create a mouse ray, represented by ray, and its formula is as follows: ray=mainCamera.ScreenPointToRay(Input.mousePosition)ray=mainCamera.ScreenPointToRay(Input.mousePosition) 其中,mainCamera为主相机,Input.mousePosition为鼠标点击的坐标,ScreenPointToRay()为Unity编辑器提供的函数;Among them, mainCamera is the main camera, Input.mousePosition is the coordinates of the mouse click, and ScreenPointToRay() is a function provided by the Unity editor; 再进行碰撞检测,是否发生碰撞表示为isHit,计算公式如下:Then perform collision detection, whether a collision occurs is expressed as isHit, and the calculation formula is as follows: isHit=Physics.Raycast(ray,out hit,maxDistance,clickableLayer)isHit=Physics.Raycast(ray,out hit,maxDistance,clickableLayer) 其中,hit包含碰撞检测到的对象信息,maxDistance为射线最大长度,clickableLayer为可点击的对象层,Physics.Raycast()为Unity编辑器提供的函数;Among them, hit contains the object information detected by the collision, maxDistance is the maximum length of the ray, clickableLayer is the clickable object layer, and Physics.Raycast() is a function provided by the Unity editor; 当isHit为真时,获取碰撞检测到的对象,表示为obj,计算公式如下:When isHit is true, get the object detected by the collision, represented as obj, and the calculation formula is as follows: obj=hit.collider.gameObjectobj = hit.collider.gameObject 其中,collider为Unity编辑器的碰撞器属性,gameObject为Unity编辑器的对象属性;Among them, collider is the collider property of the Unity editor, and gameObject is the object property of the Unity editor; 当鼠标进行点击时,获取鼠标点击信息,创建对应射线,当射线检测到碰撞体时获取碰撞对象;When the mouse is clicked, the mouse click information is obtained, the corresponding ray is created, and the collision object is obtained when the ray detects a collision body; 步骤4.2,获取碰撞对象的标签,再根据标签从数据库中获取碰撞对象的信息,信息包含对象名称,对象位置,对象功能,再将对象信息更新到文本内容区中进行显示;Step 4.2, obtain the label of the collision object, and then obtain the information of the collision object from the database according to the label, the information includes the object name, object position, object function, and then update the object information to the text content area for display; 步骤4.3,加载HighlighterPlus高亮插件,将对应标签的碰撞体加载上高亮属性,设置高亮显示为常亮,颜色为黄色,将高亮属性激活,完成高亮显示;使用全局变量解决高亮冲突,检测鼠标按下的射线是否碰撞到3D模型,当碰撞到3D模型且全局变量中存在正在高亮的对象时,将全局变量中正在高亮的对象取消高亮,并将碰撞到的建筑进行高亮;Step 4.3, load the HighlighterPlus highlight plug-in, add the highlight attribute to the collision body of the corresponding label, set the highlight display to always on, the color to yellow, activate the highlight attribute, and complete the highlight display; use global variables to resolve highlight conflicts, detect whether the ray pressed by the mouse collides with the 3D model, and when it collides with the 3D model and there is a highlighted object in the global variable, cancel the highlight of the highlighted object in the global variable and highlight the collided building; 所述监控管理模块具体为:The monitoring management module is specifically: 步骤5.1,自定义创建按钮控制脚本,当点击显示或隐藏监控时,获取到所有监控摄像图标,将所有监控图标进行显示或隐藏;设置监控图标的材质为在最前排渲染,保证监控图标不被场景中物体遮盖;Step 5.1, create a custom button control script. When you click to show or hide monitoring, get all monitoring camera icons and display or hide all monitoring icons; set the material of the monitoring icon to render in the front row to ensure that the monitoring icon is not covered by objects in the scene; 步骤5.2,使用广告牌技术显示监控按钮,使监控按钮始终朝向主相机视角,且显示大小不受场景放大或缩小的影响;自定义创建广告牌shader文件,定义按钮向上向量与相机的向上向量保持一致,定义向前向量为指向相机平面正面的法向量,定义向右向量为向上向量和向前向量的叉乘;将按钮所有顶点坐标通过向上向量、向前向量和向右向量进行变换得到最终显示按钮的顶点坐标,表示为localPos,计算公式如下:Step 5.2, use billboard technology to display the monitoring button, so that the monitoring button is always facing the main camera's perspective, and the display size is not affected by the scene zooming in or out; create a custom billboard shader file, define the button's upward vector to be consistent with the camera's upward vector, define the forward vector as the normal vector pointing to the front of the camera plane, and define the right vector as the cross product of the upward vector and the forward vector; transform all the button's vertex coordinates through the upward vector, forward vector, and right vector to obtain the final display button's vertex coordinates, expressed as localPos, and the calculation formula is as follows: localPos=center+centerOffs*[rightDir,upDir,normalDir]localPos=center+centerOffs*[rightDir,upDir,normalDir] 其中,centerOffs为按钮所有顶点坐标,是三维列向量,分别为x、y、z轴的坐标,center为坐标原点;rightDir为向右向量;upDir为向上向量;normalDi r为向前向量;*为矩阵相乘;Among them, centerOffs is the coordinates of all vertices of the button, which is a three-dimensional column vector, which are the coordinates of the x, y, and z axes respectively, and center is the origin of the coordinates; rightDir is the right vector; upDir is the upward vector; normalDi r is the forward vector; * is matrix multiplication; 再对按钮进行缩放控制;自定义创建广告牌脚本,缩放因子表示为k,其计算公式如下:Then control the scaling of the button; create a custom billboard script, the scaling factor is expressed as k, and its calculation formula is as follows: k=(depth-nearPlaneDis)/(farPlaneDis-nearPlaneDis)k=(depth-nearPlaneDis)/(farPlaneDis-nearPlaneDis) 其中k为缩放因子;depth为按钮到主相机的距离;nearPlaneDis为主相机近平面到主相机的距离;farPlaneDis为主相机远平面到主相机的距离;Where k is the scaling factor; depth is the distance from the button to the main camera; nearPlaneDis is the distance from the near plane of the main camera to the main camera; farPlaneDis is the distance from the far plane of the main camera to the main camera; 最后根据缩放因子对最终显示按钮的顶点坐标进行缩放,得到最终广告牌显示效果;Finally, the vertex coordinates of the final display button are scaled according to the scaling factor to obtain the final billboard display effect; 步骤5.3,当用户对监控画面进行全屏查看时,调用自定义的视角拉近脚本,使主相机平稳旋转至朝向目标对象的角度,再平滑拉近与目标对象的距离,完成视角过渡功能;当主相机和目标对象的距离小于设定值时,加载实时监控视频,使视频的透明度通道值逐渐变为1,最终全屏显示监控视频;Step 5.3, when the user views the surveillance image in full screen, the customized perspective zoom-in script is called to make the main camera rotate smoothly to the angle facing the target object, and then smoothly zoom in the distance to the target object to complete the perspective transition function; when the distance between the main camera and the target object is less than the set value, the real-time surveillance video is loaded, and the transparency channel value of the video gradually changes to 1, and finally the surveillance video is displayed in full screen; 步骤5.4,点击全屏监控画面右上角的关闭按钮时,使视频的透明度通道值逐渐变为1,最终取消全屏监控画面的显示,再调用自定义的视角拉近脚本,逐渐拉远主相机至原位置;Step 5.4, when you click the close button in the upper right corner of the full-screen monitoring screen, the transparency channel value of the video gradually changes to 1, and finally cancels the display of the full-screen monitoring screen, and then calls the custom perspective zoom-in script to gradually zoom out the main camera to its original position; 所述账户管理模块具体为:The account management module is specifically: 步骤6.1:服务器端安装MySQL运行环境,Unity编辑器中引用MySql.Dat a.dll动态链接库文件以操作数据库;Step 6.1: Install the MySQL runtime environment on the server side, and reference the MySql.Data.dll dynamic link library file in the Unity editor to operate the database; 步骤6.2:引用MySql.Data.MySqlClient包用于连接数据库并操作数据库数据,自定义创建数据库访问类MySqlAccess,类中包含5个字符串变量用于存储数据库信息,分别是IP地址、端口号、用户名、密码、数据库名称;自定义MySqlAccess类中的函数,包含打开数据库函数、创建表函数、插入数据函数、查询函数、更新函数、删除函数、关闭连接函数;Step 6.2: Reference the MySql.Data.MySqlClient package to connect to the database and operate database data, and create a custom database access class MySqlAccess. The class contains 5 string variables to store database information, namely IP address, port number, user name, password, and database name; customize the functions in the MySqlAccess class, including open database function, create table function, insert data function, query function, update function, delete function, and close connection function; 步骤6.3:操作数据库;引用步骤6.2中的MySqlAccess类,声明其类对象用于连接并操作数据库;调用步骤6.2自定义的打开数据库函数连接数据库,调用自定义的创建表函数创建用户信息表,该用户信息表包括用户的用户名,用户密码,用户角色;不同的用户角色对应不同权限;调用自定义的插入数据函数向用户信息表中插入数据;调用自定义的关闭连接函数关闭数据库连接。Step 6.3: Operate the database; reference the MySqlAccess class in step 6.2, declare its class object to connect to and operate the database; call the custom open database function in step 6.2 to connect to the database, call the custom create table function to create a user information table, which includes the user's username, user password, and user role; different user roles correspond to different permissions; call the custom insert data function to insert data into the user information table; call the custom close connection function to close the database connection. 3.根据权利要求2所述的基于Unity3D的GIS数字孪生系统,其特征在于,所述步骤4.1中的射线最大长度为1000。3. According to the Unity3D-based GIS digital twin system of claim 2, it is characterized in that the maximum length of the ray in step 4.1 is 1000. 4.根据权利要求2所述的基于Unity3D的GIS数字孪生系统,其特征在于,所述步骤5.3中的设定值为100。4. The Unity3D-based GIS digital twin system according to claim 2, characterized in that the set value in step 5.3 is 100. 5.根据权利要求1所述的基于Unity3D的GIS数字孪生系统,其特征在于,使用上述插值函数实现主摄像机视角的平滑过渡;用户与系统进行交互时,进入某一楼层或全屏显示监控会自动触发视角拉近过渡,视角平滑转向目标对象并拉近距离;退出楼层或取消监控全屏显示会自动触发视角拉远过渡。5. According to the Unity3D-based GIS digital twin system described in claim 1, it is characterized in that the above-mentioned interpolation function is used to achieve a smooth transition of the main camera's viewing angle; when the user interacts with the system, entering a certain floor or full-screen display of monitoring will automatically trigger a transition of the viewing angle to zoom in, and the viewing angle will smoothly turn to the target object and shorten the distance; exiting the floor or canceling the full-screen display of monitoring will automatically trigger a transition of the viewing angle to zoom out.
CN202211524789.1A 2022-11-30 2022-11-30 A GIS digital twin system based on Unity3D Active CN115794979B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211524789.1A CN115794979B (en) 2022-11-30 2022-11-30 A GIS digital twin system based on Unity3D

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211524789.1A CN115794979B (en) 2022-11-30 2022-11-30 A GIS digital twin system based on Unity3D

Publications (2)

Publication Number Publication Date
CN115794979A CN115794979A (en) 2023-03-14
CN115794979B true CN115794979B (en) 2025-04-22

Family

ID=85444125

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211524789.1A Active CN115794979B (en) 2022-11-30 2022-11-30 A GIS digital twin system based on Unity3D

Country Status (1)

Country Link
CN (1) CN115794979B (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117908722B (en) * 2023-12-25 2024-06-25 上海快来秀展示科技有限公司 Mobile sliding screen control method, system and medium based on digital twin technology

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077797A (en) * 2014-05-19 2014-10-01 无锡梵天信息技术股份有限公司 Three-dimensional game animation system
CN109521999A (en) * 2018-09-04 2019-03-26 广东工业大学 A kind of campus tour guide's plateform system based on Unity3d

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198521B2 (en) * 2005-06-27 2019-02-05 Google Llc Processing ambiguous search requests in a geographic information system
CN111857520B (en) * 2020-06-16 2024-07-26 广东希睿数字科技有限公司 3D visual interactive display method and system based on digital twin
CN113406968B (en) * 2021-06-17 2023-08-08 广东工业大学 Autonomous take-off and landing cruise method of UAV based on digital twin
CN114565742B (en) * 2022-02-16 2024-09-06 青岛科技大学 Small celestial body surface dynamic simulation and landing scene simulation method
CN114931746B (en) * 2022-05-12 2023-04-07 南京大学 Interaction method, device and medium for 3D game based on pen type and touch screen interaction
CN115033137A (en) * 2022-06-10 2022-09-09 无锡途因思网络信息技术有限公司 Virtual reality interaction method based on digital twins

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077797A (en) * 2014-05-19 2014-10-01 无锡梵天信息技术股份有限公司 Three-dimensional game animation system
CN109521999A (en) * 2018-09-04 2019-03-26 广东工业大学 A kind of campus tour guide's plateform system based on Unity3d

Also Published As

Publication number Publication date
CN115794979A (en) 2023-03-14

Similar Documents

Publication Publication Date Title
Dangelmaier et al. Virtual and augmented reality support for discrete manufacturing system simulation
US6271842B1 (en) Navigation via environmental objects in three-dimensional workspace interactive displays
Forney et al. User's Guide for Smokeview Version 4: A Tool for Visualizing Fire Dynamics Simulation Data
US8384713B2 (en) Lightweight three-dimensional display
US6734884B1 (en) Viewer interactive three-dimensional objects and two-dimensional images in virtual three-dimensional workspace
US5903271A (en) Facilitating viewer interaction with three-dimensional objects and two-dimensional images in virtual three-dimensional workspace by drag and drop technique
US5767855A (en) Selectively enlarged viewer interactive three-dimensional objects in environmentally related virtual three-dimensional workspace displays
US8584027B2 (en) Framework for designing physics-based graphical user interface
JP5807686B2 (en) Image processing apparatus, image processing method, and program
CN110378063B (en) Equipment deployment method and device based on intelligent building space and electronic equipment
MXPA06012368A (en) Integration of three dimensional scene hierarchy into two dimensional compositing system.
Falahati OpenNI cookbook
US6515688B1 (en) Viewer interactive three-dimensional workspace with a two-dimensional workplane containing interactive two-dimensional images
CN115794979B (en) A GIS digital twin system based on Unity3D
US7420556B2 (en) Information processing method and information processing apparatus
US20210241539A1 (en) Broker For Instancing
CN117742677A (en) XR engine low-code development platform
JP2005165873A (en) Web 3d-image display system
Márquez et al. Libgdx Cross-platform Game Development Cookbook
Ko et al. Interactive web-based virtual reality with Java 3D
Lu et al. Design of immersive and interactive application based on augmented reality and machine learning
US20250110614A1 (en) Capturing visual properties
CN118627155A (en) Electronic device and component control method
JP2023539010A (en) Human-machine interaction method and user interface realized by computer
Brendel et al. Exploring the immediate mode GUI concept for graphical user interfaces in mixed reality applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB03 Change of inventor or designer information
CB03 Change of inventor or designer information

Inventor after: Wang Zhihui

Inventor after: Wang Song

Inventor after: Li Haojie

Inventor after: Ning Sen

Inventor after: Liu Dingning

Inventor before: Wang Zhihui

Inventor before: Li Haojie

Inventor before: Ning Sen

Inventor before: Liu Dingning

GR01 Patent grant
GR01 Patent grant