I am starting to build my first Android app. I have reached the point where I need to start adding custom graphics and Art to make it look good. However I have also realized I have no skills or knowledge in this area at all.
What practical steps can a programmer take to develop the basic skills necessary to draw/render the kind of small, low resolution artwork suitable for mobile devices (I don't want to be able to paint a full painting or anything)?
I am particularly interested in any tools that may be of assistance, either software or devices like drawing tablets, as well as guides and tutorials.
NOTE: I know this is not strictly a programming question, and there are probably other Art forums out there, but I want to specifically hear from other programmers in a similar situation how they have acquired the skills to make mobile art.
When it comes to the tools and soft, there is nothing better than Adobe Photoshop (it's very expensive but you can download CS6 beta for free for limited time now) with a Wacom tablet (Bamboo would suffice here, or Intuos if you have too much money).
Colors are extremely important and color palettes are hard to do for a beginner. It's not simply a matter of combining two or three hexes. Check out Adobe Kuler and ColourLovers for a little help with that.
Also if you don't like beginning the work from scratch, there are plenty of PSD templates, just like this one.
And looks are nothing without feeling, so UX (user experience) is extremely important, it's also an art:). Personally I find the tips in Android Design Guidelines very useful, even if they cover mostly ICS features. You can copy most of the functionality to the pre-Honeycomb apps. There are also lots of tips on UX in the SmashingMagazine.
Related
I am building an app in android for Google cardboard Virtual Reality(VR) in Unity3d engine.Since for VR performance matter a lot for best experience.
I used Simplygon (From Assert store) to combine all textures in my app.
Stats are shown below unfortunately there is no improvement in performance when running on mobile but there is a improvement in editor.
Am I missing something ,What may be the reason for this?
Are they any options to reduce performance in mobile build as well?
Profile window stats of Unity Editor:
Before using Simplygon: ( FPS is around 60 )
After using Simplygon : (Crossed 250 FPS), But Tris and Verts count Increased a lot.
Profile window stats of Android mobile:
Before optimization:
After Optimization:
Are they any options to reduce performance in mobile build as well?
Presumably you meant are there any performance improvements you can make?
You also said that you benchmarked against the editor. This isn't a good idea - for starters - what renderer for unity are you using? OpenGL is more similar for Android than DirectX.
You need to measure more. Then measure more specifically (unity has some good performance logging helpers) before you can make useful changes..
Whenever you are optimizing, differences in hardware can have a huge impact on which optimization are impactful, and which don't make any difference. Since the android architecture is so different from a PC, it becomes a total crap-shoot as to whether other stuff that helped on the PC will also help on the mobile device. To make matters worse, things that help on one mobile device might not help on another one, say, from a different manufacturer.
In your case, the rise in polygon count was, apparently, simply more painful that then texture benefit, for your particular phone. Although, to be honest, there could be some simple settings to fix, too - someone else might have suggestions there.
Like others have said, various performance probes can help you find your bottlenecks.
I am going to build of a counting of vote program with optical MC sheet in android platform
However, i find that there is not many SDK for OMR in android.
Is it possible for me to read answer on optical MC sheet answer in OCR?
OMR is much different from OCR, normally OMR on a form are template-based, so you may need to have a template designer, the technology may not be new or complex, but it is hard to make it accurate and robust, there are lots of omr engines on the market, the most efficient way is calling online omr api service from http://ssomr.com/eng/video.asp?#api
This is a very tough project. OMR is based on templates where each checkmark area has to be consistent and clearly defined. OMR is comparison of black to white threshold against blank checkmark. For example, if there is 15% or more black pixels compared to blank 'template' checkmark, then it can be considered marked.
With mobile pictures, each picture is inconsistent in size, and lighting will affect how your binarization works, so thresholding will be very tough to standardize.
In general, on device OCR (not even talking about OMR) is weak or too expensive, even for machine text. I would consider server-based processing for OMR. It is not on device, but it can be fast enough to seem like it is running right on your device.
I'm interested in making an app which would allow sequencing audio instruments and drums in real time, which would work on several mobile platforms. The visual interface I designed is quite elaborate, and I'm definitely going to need custom graphics capabilities.
The way I see it, I have two options. 1. Learn OpenGL ES and build something relatively cross-platform, and then wrap it with layers that can interact with specific OS API's. 2. Use a 2d game engine, e.g Unity 2D, and utilize that to build a responsive interface.
Option 1 is the most difficult, since I've never programmed graphics before, while option 2 may be an overkill since audio processing apps require lots of processing power lots of low-level optimization for DSP routines. Losing some of this power to an entire game engine may be undesirable.
It's very important that I don't have to reimplement the interface from scratch for every platform. It's buggy and error prone, and a pain to manage.
I'd like some feedback on the best way to go about evaluating my options. Has someone looked into something like this already?
It has been done already, i believe i saw it on the unity forums,
as for whether or not it makes sense, sure it does,
Unity does something that is truly amazing, you can develop it once and deploy to iPhone, Android and WP and more, instead of using xCode with sound effect plugins unity comes with fmod that is easy to tap into.
Not something i am going to do, but if i did, unity would be perfect for it especially when you think that you can have play functions with amazing visual ques that unity is made for.
Lol, sounds like a sales pitch, but no, its not a bad idea to choose unity for such a thing. since you can always write the missing features in plugins if needed. beats going to OpenGL which is a pain in the {bug}
I've been digging since while for 3D graphics tutorials for Android. I tried raw opengl (es). I also tried min3d. I found out that things can be very complex or very easy if someone else did the math for you. Min3D is really great and easy to use, but is also really minimalistic. I can't find how to make lights actually cast shadows (and I doubt it's supported), I can't find how to make the surface reflect, how to change the surface to diffuse more or less.
Is there any library that has scene handling and supports shadows (also shadow cast by diffused light), control materials to achieve different levels of diffusion, reflections and transparency.
Note: I forgot to mention I need free framework.
Since the answer of Eric convinced me that realistic 3d is hard to achieve on mobile devices I would accept answers that explain how to fake these effects (or links). Again effects I need are:
shadows
reflections
from glossy material
from matte material
transparency (I think that's in the min3d examples, but it's here for completeness
I've seen shadows in 3d android games, although I'm not 100% convinced that are real (cast by objects).
I can't think of any libraries that meet your requirements for a mobile platform, but there are several middleware products to choose from:
Unity3d : http://unity3d.com/
Unreal SDK : http://udk.com
Ogre : http://www.ogre3d.org/
All of these offer scene management, lighting, material management, etc... yet, I doubt any of these are a silver bullet for what you are asking. Regardless of pricing and licensing - upto 3500 dollars for Unity3D pro mobile - you will still have to do a serious amount of coding yourself and often in a language you may not be familar with.
Also, keep in mind that a lot of the gfx in opengl-es based products (mostly games) are often faked. While it's perfectly possible to have dynamic lighting, shadows and transparency, these things can be crippling for your performance if you have a lot of geometry. After all, a phone or tablet is not the powerhouse that a desktop cpu/gpu is these days. Not yet anyway.
Another thing to note: I'm not sure what level of realism you are trying to achieve, but all the things you mention are typically associated with raytracing/raycasting. And that's a whole other bag of tricks as you can forget about real-time interaction, especially on mobile devices.
No way around it: coding and creating with real-time graphics in mind is hard and it's even harder on mobile platforms.
I want to transplant a 3D program written in OpenGL on windows platform to Android, but I wonder if it can run smoothly on general Android platforms, so i want to estimate how much hardware resource is sufficient for it to run smoothly. It is some kind like the hardware requirements for a software or 3d game that a company will recommend the users. I don't know how can i get a hardware requirements of my program when transplant to Android.
i used gdebugger and it gave me some information but i don't think that is enough for me. Anyone here have some idea or solution? Many thanks in advance!
If your program is simple enough, you could write up some estimates about texture fill rate, which is a pretty basic (and old) metric of rendering performance. Nearly every 3D chip comes with a theoretical fill rate, so you can get the theoretical numbers of both your desktop system and some Android phones.
The texture memory footprint is another thing that you can estimate, especially using gdebugger. Once again, these numbers are known for most chips.
This is a quick way to produce some numbers, obviously without any real life performance guarantees.
The best way would be to test it on an actual device, and get an idea of what hardware works well. You could distribute a beta app and get some feedback too.
Depends on feature set that you use. For example, if you use FBO, the device will have to support framebuffer extension. If you use MSAA, smooth line, the device will have support corresponding extensions.
After listing down your requirements, you can use glGet to check for the device suppport
http://www.opengl.org/sdk/docs/man/xhtml/glGet.xml