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 dawggeek · May 09, 2012 at 03:33 PM · texture2dpainting

DrawPixel with smooth edges

I am using DrawPixels on a Texture2D in order to create a painting style application. However, it draws squares which will give a very rough edge. Is it possible to have a more rounded look? Here is my code:

 using UnityEngine;
 using System.Collections;
 
 public class PaintControl : MonoBehaviour 
 {
     public Transform plane;
     public Color color;
     public int Size;
 
     private RaycastHit hit;
     private Color[] paintColors;
 
     // Use this for initialization
     void Start () 
     {
         // init the texture to white
         Texture2D texToWhite = plane.renderer.material.mainTexture as Texture2D;
         Color[] fillColorArray = texToWhite.GetPixels();
 
         for (int i = 0; i < fillColorArray.Length; ++i)
             fillColorArray[i] = Color.white;
 
         texToWhite.SetPixels(fillColorArray);
         texToWhite.Apply();
 
         SetColor(this.color);
     }
 
     // Update is called once per frame
     void Update()
     {
         if (Input.GetMouseButton(0))
         {
             Ray theRay = Camera.main.ScreenPointToRay(Input.mousePosition);
             
             if(Physics.Raycast(theRay, out hit, 50.0f))
             {
                 GameObject go = hit.collider.gameObject;
 
                 if (go.tag == "DrawCanvas")
                 {
                     Debug.Log(Input.mousePosition);
                     Renderer render= hit.collider.renderer;
                     MeshCollider meshColl = hit.collider as MeshCollider;
 
                     Texture2D tex = render.material.mainTexture as Texture2D;
                     Vector2 pixelUV = hit.textureCoord;
 
                     pixelUV.x *= tex.width;
                     pixelUV.y *= tex.height;
 
                     //tex.SetPixel((int)pixelUV.x, (int)pixelUV.y, Color.black);
                     tex.SetPixels((int)pixelUV.x, (int)pixelUV.y, this.Size, this.Size, paintColors);
                     tex.Apply();
                 }
             }
         }
     }
 
     public void SetColor(Color tempColor)
     {
         this.color = tempColor;
         SetSize(this.Size);
     }
 
     public void SetSize(int tempSize)
     {
         this.Size = tempSize;
         paintColors = new Color[tempSize * tempSize];
 
         for (int i = 0; i < paintColors.Length; i++)
             paintColors[i] = this.color;
     }
 }
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

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by DaveA · May 09, 2012 at 03:49 PM

You could sample the surrounding pixels before you set it. Often top, bottom, left, right, average them into the color you are setting. You'll want to play with the math to achieve the look you want. Google antialiasing.

Comment
Add comment · 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
0

Answer by saddam751 · Dec 24, 2013 at 04:57 AM

use Midpoint Circle Algorithm

http://en.wikipedia.org/wiki/Midpoint_circle_algorithm

Comment
Add comment · 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

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

6 People are following this question.

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

Related Questions

The non-trivial problem with image processing. 1 Answer

painting program not drawing at cursor point on texture 0 Answers

RaycastHit2D hit to texture coordinate 0 Answers

Why is my terrain so dark? 1 Answer

Coloring textures in Unity3d 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