I want to add textures as per reality to the 3D buildings created out of a building shapefile. How should I do this? How will my CGA rule identify each building and then apply the textures or attributes to it as per reality? I do not want to do it one by one, I want this nature of rule to atleast run for 100-200 buildings or may be a patch in the area. Please help.
There are two parts to this workflow, texturing the facade of the building and texture the roof.
I'm assuming you have a library of textures that represent each buildings facade. Each texture represents the correct material, window shape, etc for the building but is not specific to a side. In essence, a generic facade for all sides of the building, per building. You need to make sure that all the facades are rectified correctly, and have the same scale. You'd then want to include in the texture name an unique identifier on the GIS data for each building footprint or multipatch, for example, Facade_ObjID24. When you apply a texture to the side of the building, you can map the attribute from the GIS feature to a rule parameter to use it in referencing the correct facade per building.
If you have unique facades for each side of a building, this gets a bit more complex. You'd have to separate the facades out into front facing, side facing, rear facing sets, and then reference them to the front-side-rear of the input GIS geometry.
If you have an orthophoto of the area, you can use it as the source texture for the roofs. You can write a simple model builder model to iterate through each footprint or multipatch, clip out an image of the roof texture and name it acording to the features ID, and store the coordinates of the image as attributes on the GIS feature. You can then map the roof textures to the geometry via CGA.
I'd start by taking a look at Tutorial 7, Facade Modeling, as the best way to get started.