Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by thenachotech1113 · Dec 19, 2014 at 11:34 PM · tangent

Trying to set Mesh.tangents = Vector4[] gives error of "An object reference is required to access non-static member `Create_Mesh.mesh'"

hello everyone, so im following this tutorial on creating a deformable mesh, and aproximately 36 mitutes in the guy creates a function to calculate the tangents, everything seems to work fine for him but i get this error that says "An object reference is required to access non-static member `Create_Mesh.mesh'" clueless of what did I do wrong i thought you guys might have an idea on what it could be. this is the part where the problem seems to be:

     private static void RecalculateTangents (Mesh objMesh)
     {
         int [] triangles = objMesh.triangles;
         Vector3 [] vertices = objMesh.vertices;
         Vector2 [] uv = objMesh.uv;
         Vector3 [] normals = objMesh.normals;
 
         int triangleCount = triangles.Length;
         int vertexCount = vertices.Length;
 
         Vector3 [] tan1 = new Vector3[vertexCount];
         Vector3 [] tan2 = new Vector3[vertexCount];
 
         Vector4 [] tangents = new Vector4[vertexCount];
 
         for (long a = 0 ; a < triangleCount ; a++)
         {
             long i1 = triangles[a + 0];
             long i2 = triangles[a + 1];
             long i3 = triangles[a + 2];
 
             Vector3 v1 = vertices[i1];
             Vector3 v2 = vertices[i2];
             Vector3 v3 = vertices[i3];
 
             Vector2 w1 = uv[i1];
             Vector2 w2 = uv[i2];
             Vector2 w3 = uv[i3];
 
             float x1 = v2.x - v1.x;
             float x2 = v3.x - v1.x;
 
             float y1 = v2.y - v1.y;
             float y2 = v3.y - v1.y;
 
             float z1 = v2.z - v1.z;
             float z2 = v3.z - v1.z;
 
             float s1 = w2.x - w1.x;
             float s2 = w3.x - w1.x;
             
             float t1 = w2.y - w1.y;
             float t2 = w3.y - w1.y;
 
             float div = s1 * t2 - s2 * t1;
             float r = div == 0.0f ? 0.0f : 1.0f / div;
 
             Vector3 sdir = new Vector3 ((t2 * x1 - t1 * x2) * r, (t2 * y1 + t1 * y2) * r, (t2 * z1 - t1 * z2) * r);
             Vector3 tdir = new Vector3 ((s1 * x2 - s2 * x1) * r, (s1 * y2 - s2 * y1) * r, (s1 * z2 - s2 * z1) * r);
 
             tan1[i1] += sdir;
             tan1[i2] += sdir;
             tan1[i3] += sdir;
 
             tan2[i1] += tdir;
             tan2[i2] += tdir;
             tan2[i3] += tdir;
         }
 
         for (long a = 0; a < vertexCount; a ++)
         {
             Vector3 n = normals[a];
             Vector3 t = tan1[a];
 
             Vector3.OrthoNormalize(ref n, ref t);
             tangents[a].x = t.x;
             tangents[a].y = t.y;
             tangents[a].z = t.z;
 
             tangents[a].w =  (Vector3.Dot(Vector3.Cross(n, t), tan2[a]) < 0.0f) ? -1.0f : 1.0f;    
         }
 
         mesh.tangents = tangents;
 
     }


I apreciate your time and thanks a lot in advanced.

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by EvilTak · Dec 20, 2014 at 03:55 AM

What I think is that you have kept this function static, and this class Create_Mesh has a instance member Mesh mesh. Since you are accessing an instance member from a static function, the current error is thrown. If you just make this function non-static, (by removing the static keyword), it should work fine.

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image thenachotech1113 · Dec 22, 2014 at 11:00 PM 0
Share

oh, yea. THanks a lot, erased the static and works like a charm.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

27 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Where is the normal and tangent velocities in Shuriken? 0 Answers

Out Of Memory With Mesh Generation 0 Answers

Tangent Normal Map produces reversed effects 1 Answer

How can I get an accurate bounding rect for an AnimationCurve 1 Answer

Can I get the Tangent(as Vector3) of a sphere at the hit point with raycast? 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges