How to successfully transform local mesh vertex coordinates into world coordinates?

Here is what I’m trying to do. I load the mesh and randomly access a vertex from the mesh and extract it from the array. I then want to transform this vertex’s location to world coordinates so that I can use it to move another game object in the scene to that location on the first object.

My code works, and even the scaling is alright I’m fairly certain, but the transformed coordinates are off by roughly +8 in the X direction and -12 in the Z direction.

Why is this happening? Here is my code:

using UnityEngine;
using System.Collections;

public class Path : MonoBehaviour {

GameObject model;

void Start ()
    model = Resources.Load("Model") as GameObject;
    Vector3[] vertices = model.GetComponent<MeshFilter>().sharedMesh.vertices;
    var myIndex1 = Random.Range(0, vertices.Length);
    Vector3 p = vertices[myIndex1];
    Transform tr = model.transform;
    Vector3 V = tr.TransformPoint(p);

    iTween.MoveTo(gameObject, V, 15);


void Update () {



You’re using model.transform to convert it into World Coordinates. But model comes from Resources, which means it’s a prefab, which means it isn’t in the scene, which means it doesn’t have true local coordinates. Are you sure you don’t want to use the local object’s transform instead?