Пример #1
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="rect"></param>
 /// <param name="score"></param>
 /// <param name="classId"></param>
 public ObjectDetection(Rect? rect = null, float score = 0, int classId = -1)
 {
     Rect = rect.GetValueOrDefault(new Rect());
     Score = score;
     ClassId = classId;
 }
Пример #2
0
    private void InternalInitFromImage(Texture2D texture, float pixelsPerMeter, string shaderType, RegistrationPoint regPoint, Rect? rect = null)
    {
        _texture = texture;
        _textureRect = rect.GetValueOrDefault(new Rect(0f, 0f, (float)_texture.width, (float)_texture.height));

        if (pixelsPerMeter == 0)
            pixelsPerMeter = CinchOptions.DefaultPixelsPerMeter;

        this._pixelsPerMeter = pixelsPerMeter;
        _regPoint = regPoint;

        //flip the y-axis
        if (CinchOptions.UseTopLeftSpriteSheetCoordinates)
        {
            var h = _textureRect.height;
            _textureRect.yMin = _texture.height - (_textureRect.yMin + _textureRect.height);
            _textureRect.height = h;
        }

        var scaledRect = new Rect(_textureRect.x/_texture.width, _textureRect.y/_texture.height, _textureRect.width/_texture.width, _textureRect.height/_texture.height);

        _originalMesh = new Mesh();
        _originalMesh.name = "Scripted_Plane_New_Mesh";
        var fullWidth = _textureRect.width / pixelsPerMeter;
        var fullHeight = _textureRect.height / pixelsPerMeter;
        var left = fullWidth * (0f-regPoint.X);
        var right = fullWidth * (1f-regPoint.X);
        var top = fullHeight * (0f-regPoint.Y);
        var bottom = fullHeight * (1f-regPoint.Y);
        var front = -.1f;
        var flt = new Vector3(left,  top, front);
        var frt = new Vector3(right, top, front);
        var frb = new Vector3(right, bottom, front);
        var flb = new Vector3(left,  bottom, front);

        _originalMesh.vertices = new Vector3[] {
                                    flt, frt, frb, flb
        };

        _originalMesh.uv = new Vector2[] {
            new Vector2 (scaledRect.xMin, scaledRect.yMin),
            new Vector2 (scaledRect.xMax, scaledRect.yMin),
            new Vector2 (scaledRect.xMax, scaledRect.yMax),
            new Vector2 (scaledRect.xMin, scaledRect.yMax)
        };

        _originalMesh.triangles = new int[] {
            3 , 2 , 1 , 0 , 3 , 1
        };
        _originalMesh.RecalculateNormals();

        _meshFilter = gameObject.AddComponent<MeshFilter>();
        _meshFilter.sharedMesh = _transformedMesh;

        var shader = ShaderCache.GetShader(shaderType);
        _meshRenderer = gameObject.AddComponent<MeshRenderer>();
        _meshRenderer.castShadows = false;
        _meshRenderer.receiveShadows = false;
        _material = _meshRenderer.material;
        _material.shader = shader;
        _material.mainTexture = _texture;
        _material.color = new Color( 1f, 1f, 1f, 1f );
        _material.mainTexture.wrapMode = TextureWrapMode.Clamp;

        if (Parent == null)
            _meshRenderer.enabled = false; //default it to false until it gets added

        __UpdateMesh();
    }