Unity3d 不显示摄像机馈送的增强现实

Unity3d 不显示摄像机馈送的增强现实,unity3d,computer-vision,augmented-reality,wikitude,artoolkit,Unity3d,Computer Vision,Augmented Reality,Wikitude,Artoolkit,我正在尝试决定我的Unity3d项目使用哪种AR工具。 候选人是ARToolkit和Wikitude。 我也在寻找的是关闭相机馈送,但仍然显示一个虚拟对象,该对象根据标记的位置或旋转旋转和缩小/增大大小 例如,如果我想在标记上方显示一个红色的3d立方体,我只想在黑色背景上显示立方体,而不显示其他任何内容。AR工具是否支持此功能?如果不是ARToolkit或Wikitude也没关系 感谢ARToolkit具有该功能,您只需选中ARCamera脚本上名为“透明显示”的框即可 使用透明显示时,黑色被认

我正在尝试决定我的Unity3d项目使用哪种AR工具。 候选人是ARToolkit和Wikitude。 我也在寻找的是关闭相机馈送,但仍然显示一个虚拟对象,该对象根据标记的位置或旋转旋转和缩小/增大大小

例如,如果我想在标记上方显示一个红色的3d立方体,我只想在黑色背景上显示立方体,而不显示其他任何内容。AR工具是否支持此功能?如果不是ARToolkit或Wikitude也没关系


感谢ARToolkit具有该功能,您只需选中ARCamera脚本上名为“透明显示”的框即可

使用透明显示时,黑色被认为是透明的,因为它没有渲染。我想你想要它也是出于同样的原因


有关此功能的更多信息,包括如何校准透明显示,您可以查看官方文档:

ARToolkit具有此功能,您只需选中ARCamera脚本上名为“透明显示”的框

使用透明显示时,黑色被认为是透明的,因为它没有渲染。我想你想要它也是出于同样的原因


有关这方面的更多信息,包括如何校准透明显示,您可以查看官方文档:

使用Wikitude插件,也可以通过向执行渲染的摄影机添加以下脚本来实现

using UnityEngine;
using UnityEngine.Rendering;

public class CustomCameraRenderer : MonoBehaviour {

    public Texture2D textureToRender;

    void Start () {
        var buffer = new CommandBuffer();

        buffer.Blit(textureToRender, BuiltinRenderTextureType.CameraTarget);
        var camera = GetComponent<Camera>();
        CameraEvent eventForBlit;

        if (camera.actualRenderingPath == RenderingPath.Forward) {
            eventForBlit = CameraEvent.BeforeForwardOpaque;
        } else {
            eventForBlit = CameraEvent.BeforeGBuffer;
        }
        camera.AddCommandBuffer(eventForBlit, buffer);
    }
}
使用UnityEngine;
使用UnityEngine.Rendering;
公共类定制摄影师:MonoBehavior{
公共纹理2D纹理渲染;
无效开始(){
var buffer=new CommandBuffer();
Blit(textureToRender、内置的UnderTextureType.CameraTarget);
var-camera=GetComponent();
CameraEventForblit;
if(camera.actualRenderingPath==RenderingPath.Forward){
eventForBlit=CameraEvent.BeforeForward不透明;
}否则{
eventForBlit=CameraEvent.BeforeGBuffer;
}
camera.AddCommandBuffer(eventForBlit,buffer);
}
}

然后,只需在脚本的检查器中添加所需的纹理作为背景。

使用Wikitude插件,还可以通过将以下脚本添加到进行渲染的摄影机来实现这一点

using UnityEngine;
using UnityEngine.Rendering;

public class CustomCameraRenderer : MonoBehaviour {

    public Texture2D textureToRender;

    void Start () {
        var buffer = new CommandBuffer();

        buffer.Blit(textureToRender, BuiltinRenderTextureType.CameraTarget);
        var camera = GetComponent<Camera>();
        CameraEvent eventForBlit;

        if (camera.actualRenderingPath == RenderingPath.Forward) {
            eventForBlit = CameraEvent.BeforeForwardOpaque;
        } else {
            eventForBlit = CameraEvent.BeforeGBuffer;
        }
        camera.AddCommandBuffer(eventForBlit, buffer);
    }
}
使用UnityEngine;
使用UnityEngine.Rendering;
公共类定制摄影师:MonoBehavior{
公共纹理2D纹理渲染;
无效开始(){
var buffer=new CommandBuffer();
Blit(textureToRender、内置的UnderTextureType.CameraTarget);
var-camera=GetComponent();
CameraEventForblit;
if(camera.actualRenderingPath==RenderingPath.Forward){
eventForBlit=CameraEvent.BeforeForward不透明;
}否则{
eventForBlit=CameraEvent.BeforeGBuffer;
}
camera.AddCommandBuffer(eventForBlit,buffer);
}
}

然后,只需在该脚本的检查器中添加您想要的纹理作为背景。

根据Shalafi的评论……如果您深入研究第1222行的ARcontroller脚本并找到

clearCamera.clearFlags=CameraClearFlags.SolidColor


如果SolidColor更改为Skybox,则黑色将成为统一的摄影机视图

下面是Shalafi的评论……如果您深入研究第1222行的ARcontroller脚本并找到

clearCamera.clearFlags=CameraClearFlags.SolidColor

如果SolidColor更改为Skybox,则黑色将成为统一的摄影机视图